1. 문제
https://programmers.co.kr/learn/courses/30/lessons/77484
2. 풀이
2.1. 나의 풀이
def solution(lottos, win_nums):
win_nums_dic = {}
for win_num in win_nums:
win_nums_dic[win_num] = True
same_num = 0
wild_card = 0
for x in lottos:
if x in win_nums_dic:
same_num += 1
elif x == 0:
wild_card += 1
return [min(7 - same_num - wild_card,6), min(7 - same_num, 6)]
2.2. 숏코딩
count 함수와 in 을 이용하면 손쉽게 해결할 수 있습니다.
# 프로그래머스 : ..... , 박관우 , SeongminJeong , yimactor , 민웅기 외 14 명 님의 소스코드 참조
def solution(lottos, win_nums):
rank=[6,6,5,4,3,2,1]
cnt_0 = lottos.count(0)
same = 0
for x in win_nums:
if x in lottos:
same += 1
return rank[cnt_0 + same], rank[same]
아래 소스 코드는 set을 이용하여 정답을 구하는 방법을 이용하고 있습니다.
# 프로그래머스 : 837477 님의 소스코드 참조
def solution(lottos, win_nums):
rank = { 0: 6, 1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: 1 }
return [rank[len(set(lottos) & set(win_nums)) + lottos.count(0)], rank[len(set(lottos) & set(win_nums))]]