문제풀이/Programmers

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

서채리 2022. 2. 18. 17:53

[문제]

https://programmers.co.kr/learn/courses/30/lessons/77484

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

[풀이]

문제가 너무 길어서 처음엔 어려운 문제인줄 알았다.

읽어보니까 순서는 전혀 상관없고

  1. 민우가 구매한 로또 번호와 당첨 번호가 일치하는 개수
  2. 민우가 구매한 로또 번호 중 0의 개수

이렇게 두 가지를 구하면 첫 번째는 최저 순위, 첫 번째와 두 번째를 더한 경우는 최고 순위가 된다.

 

민우가 구매한 로또 번호와 당첨 번호는 둘 다 리스트이기 때문에 교집합을 구하면 간단하겠다는 생각을 했다.

따라서 1번은 두 리스트를 set으로 변환한 후 교집합을 구해주었다.

 

리스트에서 0의 개수를 구하기 위해서는 count 함수를 사용하면 된다.

 

딕셔너리의 key에 맞춘 개수, value에는 등수를 저장한 후 위에서 구한 숫자로 등수를 구해주었다.

 

[코드]

def solution(lottos, win_nums):
    rule = {6: 1, 5: 2, 4: 3, 3: 4, 2: 5, 1: 6, 0: 6}
    equal = len(set(lottos) & set(win_nums))
    zero = lottos.count(0)

    return [rule.get(equal + zero), rule.get(equal)]