[프로그래머스] 로또의 최고 순위와 최저 순위 _ 문제 풀이



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))]]