[프로그래머스] Level1 로또의 최고순위와 최저순위

HO94·2021년 6월 26일
0

프로그래머스

목록 보기
2/13

2021.06.26

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

문제
로또를 샀는데 동생이 낙서를 해서 숫자를 가렸다.
이때 최고 순위와 최저 순위를 반환하라

  • 알아볼 수 없는 번호를 0으로 표기
  • 순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다.
  • 알아볼 수 없는 두 개의 번호를 각각 10, 6이라고 가정하면 3등에 당첨될 수 있습니다.
    - 3등을 만드는 다른 방법들도 존재합니다. 하지만, 2등 이상으로 만드는 것은 불가능합니다.
  • 알아볼 수 없는 두 개의 번호를 각각 11, 7이라고 가정하면 5등에 당첨될 수 있습니다.
    - 5등을 만드는 다른 방법들도 존재합니다. 하지만, 6등(낙첨)으로 만드는 것은 불가능합니다.

처음 30분동안 각자 문제풀기
문제에서 보여준 예시에서 0을 당첨 번호 또는 당첨 되지 않는 번호로 바꾸는 걸 보고
0에 번호를 할당해주는 방식으로 접근했는데 결국 못 풀었다.

알고보니 맞춘 개수와 등수를 딕셔너리로 할당 하고,
0을 다 당첨했다/낙점했다고 해서 표시해주면 되는 문제였다,,

def solution(lottos, win_nums):
    answer = []
    # 등수
    rank = {6 : 1, 5 : 2, 4 : 3, 
           3 : 4, 2 : 5, 1 : 6, 0 : 6}
    
    # 일치 개수
    count = 0
    
    # 0 개수
    zero_count = 0
    
    # code
    for i in lottos:
        if i in win_nums:
            count += 1
        if i == 0:
            zero_count += 1
    
    # 
    answer.append(rank[count + zero_count])
    answer.append(rank[count])

    return answer

0개의 댓글