프로그래머스 로또의 최고 순위와 최저 순위 코드 및 해설 (파이썬)
2021. 6. 8. 12:13ㆍalgorithm
반응형
https://programmers.co.kr/learn/courses/30/lessons/77484
먼저 num2rank 딕셔너리를 정의해 일치한 숫자의 개수를 로또 순위로 매핑할 수 있게 했습니다. sames 변수엔 lottos와 win_nums에서 겹치는 숫자의 개수를, zeros에는 lottos에서 0의 개수를 저장했습니다. 최고 순위는 0이 모두 당첨번호와 일치하는 겨우, 최저 순위는 0이 아무 당첨번호와도 일치하지 않는 경우이므로, 최대로 겹치는 숫자의 개수인 best엔 sames와 zero를 더한 값을, 최소로 겹치는 숫자의 개수인 worst엔 sames의 값을 저장합니다.
마지막으로 best와 worst의 값을 num2rank를 이용해 로또 순위로 변환하여 답을 반환합니다.
from collections import Counter
def solution(lottos, win_nums):
# key: 일치한 숫자의 개수, value: 순위
num2rank = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}
# 겹치는 숫자의 개수
sames = len(set(lottos) & set(win_nums))
# 알아볼 수 없는 숫자의 개수
zeros = Counter(lottos)[0]
# 알아볼 수 없는 숫자가 모두 당첨번호와 일치하는 경우
best = sames + zeros
# 알아볼 수 없는 숫자 중 아무것도 당첨번호와 일치하지 않는 경우
worst = sames
return [num2rank[best], num2rank[worst]]
반응형
'algorithm' 카테고리의 다른 글
백준 트리 순회 코드 및 해설 (파이썬) (0) | 2021.06.08 |
---|---|
백준 회전하는 큐 코드 및 해설 (파이썬) (0) | 2021.06.08 |
프로그래머스 멀쩡한 사각형 코드 및 해설 (파이썬) (0) | 2021.06.02 |
프로그래머스 기능개발 코드 및 해설 (파이썬) (0) | 2021.06.02 |
프로그래머스 짝지어 제거하기 코드 및 해설 (파이썬) (0) | 2021.06.02 |