- 최고 순위일때 맞춘 문제의 개수 =
0의 개수
+같은번호의 개수
- 최저 순위일때 맞춘 문제의 개수 =
같은번호의 개수
lottos
와 win_nums
에는 중복된 번호가 존재하지 않으므로 이 경우는 생각하지 않아도 된다.
: lottos
를 오름차순으로 정렬한 뒤, 앞에서부터 0의 개수를 센다.
: lottos
와 win_nums
의 교집합의 개수
(중복되는 번호가 존재하지 않으므로 집합을 사용할 수 있다.)
맞춘 번호의 개수를 알면 순위를 구할 수 있다.
{맞춘 번호 수 : 순위}
를 표현하는 딕셔너리를 만들어 순위를 구한다.
def solution(lottos, win_nums):
# {맞춘 번호 개수 : 순위}
dic = {6: 1, 5: 2, 4: 3, 3: 4, 2: 5, 1: 6, 0: 6}
# 0의 개수
emptyNum = 0
lottos.sort()
for i in lottos:
if i == 0: emptyNum += 1
else: break
# 같은 번호의 개수
equalNum = len(set(win_nums) & set(lottos))
# 결과 리턴
return [dic[emptyNum + equalNum], dic[equalNum]]
0의 개수를 구할때 for문을 사용할 필요없이 count()
함수로도 구현 가능하다.
emptyNum = lottos.count(0)