def solution(lottos, win_nums):
count_z = lottos.count(0)
lottos = sorted(lottos, reverse=True)
answer = 0
for num in lottos :
if num == 0 :
break
elif num in win_nums :
answer += 1
rank = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}
return [rank[answer+count_z], rank[answer]]
풀이
먼저 0의 개수를 count함수를 이용해 추출한다.
최고 순위는 0(알아볼수 없는 숫자)이 다 맞았다고 가정하여 "알아볼 수 있는 숫자 중 맞은 개수 + 0의 개수"의 순위이고,
최저 순위는 0이 다 틀렸다고 가정하여 "알아 볼 수 있는 숫자 중 맞은 개수" 의 순위이다.
그래서 for문을 통해 lottos 숫자 중 맞은 개수를 세고, (sorted 함수를 이용해 lottos를 정렬하여 0일 경우 for문을 중지하도록 해줬음)
rank 딕셔너리를 통해 개수에 해당하는 순위를 return 해준다.
다른분 풀이 중에, rank를 딕셔너리 형태로 하지 않고, list 형태로 하는 법도 있었다.
rank = [6, 6, 5, 4, 3, 2, 1]
return [rank[answer+count_z], rank[answer]]
'Algorithm > Programmers' 카테고리의 다른 글
[Python] 예산 (0) | 2021.05.14 |
---|---|
[Python] 보석 쇼핑 (0) | 2021.05.11 |
[Python] 소수 만들기 (0) | 2021.05.11 |
[Python] 오픈채팅방 (0) | 2021.05.07 |
[Python] 실패율 (0) | 2021.05.02 |