99클럽 코테 스터디 39일차 TIL : 탐욕법(Greedy)

마늘맨·2024년 8월 29일
0

99클럽 3기

목록 보기
39/42

Notion에서 작성한 글이라, 여기에서 더 깔끔하게 보실 수 있습니다! 😮😊


[Challenger] 로또의 최고 순위와 최저 순위

[로또의 최고 순위와 최저 순위]

  • 요새 구현, 시뮬레이션 문제들을 풀면서 정신이 오락가락한 상태였는데 간만에 상쾌하게 금방 풀었다.

접근 과정

  • 가능한 최고 순위는 알아볼 수 없는 번호들이 모두 당첨 번호와 일치할 때이다.
  • 가능한 최저 순위는 알아볼 수 없는 번호들이 모두 당첨 번호와 일치하지 않을 때이다.
  • 이 때, lottoswin_nums 모두 distinct integer로 구성되어 있으므로 알아볼 수 없는 번호들이 어떤 숫자라고 가정할 필요 없이 그 개수만 세어주고, 알아볼 수 있는 수들은 당첨 번호와 몇 개나 일치하는지 세어준 다음,
    • 최고 순위는 (알아볼 있는 수들 중 당첨 번호와 일치하는 수의 개수) + (알아볼 수 없는 번호들의 수(모두 당첨 번호와 일치한다고 가정)) 에 해당하는 순위
    • 최저 순위는 (알아볼 수 있는 수들 중 당첨 번호와 일치하는 수의 개수) 에 해당하는 순위이다. (알아볼 수 없는 번호들은 모두 당첨 번호와 일치하지 않는다고 가정하는 것이다.)

Solution. O(n)O(n)

def solution(lottos, win_nums):
    win = set(win_nums)
    zero_cnt, win_cnt = 0, 0

    for l in lottos:
        if l == 0: zero_cnt += 1
        elif l in win: win_cnt += 1
    
    return [7-(wz if (wz:= win_cnt+zero_cnt) else 1), 7-(win_cnt if win_cnt else 1)]
  • 맞춘 번호도, 알아볼 수 없는 번호들도 하나도 없는 경우는 7등이 아닌 6등이므로 따로 처리해 준다.

profile
안녕! 😊

0개의 댓글