프로그래머스 LV1 - 로또의 최고 순위와 최저 순위
내 풀이
def solution(lottos, win_nums):
prize = {6: 1, 5: 2, 4: 3, 3: 4, 2: 5, 1: 6, 0: 6}
count = 0
result = []
for lotto in lottos:
if lotto in win_nums:
count += 1
a = lottos.count(0)
best = count + a
worst = count
result.append(prize[best])
result.append(prize[worst])
return result
다른 풀이
def solution(lottos, win_nums):
# {맞춘 개수 : 순위}
lotto_rankings = {
6 : 1, # 6개 맞추면 1등
5 : 2, # 5개 맞추면 2등
4 : 3, # 4개 맞추면 3등
3 : 4, # 3개 맞추면 4등
2 : 5, # 2개 맞추면 5등
1 : 6, # 1,0개 맞추면 6등
0 : 6
}
#0의 개수
zero_nums = lottos.count(0)
#lotto와 win_num의 교집합 개수 (번호 맞춘 개수)
correct_nums = len( set(lottos) & set(win_nums) )
#최고 상황과 최저 상황
best_nums = correct_nums + zero_nums
lowest_nums = correct_nums
#리스트로 만들어서 result에 넣기
result = [lotto_rankings[best_nums], lotto_rankings[lowest_nums]]
return result
출처: https://1ets-just-do-it.tistory.com/38 [파이썬은 신이야🔥🔥🔥:티스토리]
풀이 해석
- lotto와 win_num의 교집합을 set 함수를 이용하여 나타냄
- result에 append하는게 아닌 바로 리스트로 만들어서 나타냄
배울 점
- set 함수의 이용
댓글남기기