[프로그래머스] Lv1 로또의 최고 순위와 최저 순위

do yeon kim·2022년 9월 19일
0
회고
문제풀이

https://school.programmers.co.kr/learn/courses/30/lessons/77484

def solution(lottos, win_nums):
    win = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}
    answer = []

    c = set(lottos).intersection(set(win_nums))
    min = win[len(c)]
    max = win[len(c) + lottos.count(0)]

    answer.append(max)
    answer.append(min)

    return answer


def solution(lottos, win_nums):

    rank=[6,6,5,4,3,2,1]

    cnt_0 = lottos.count(0)
    ans = 0
    for x in win_nums:
        if x in lottos:
            ans += 1
    return rank[cnt_0 + ans],rank[ans]


lottos = [44, 1, 3, 2, 31, 25]
win_nums = [31, 10, 45, 1, 6, 19]

result = solution(lottos, win_nums)
print(result)

set의 intersection()을 이용해서 교집합을 구했다. 두개에 모두 해당하는 번호가 있다면, 그 번호 리스트의 갯수가 최악의 당첨되는 경우가 될 것이다.

그리고 0은 어떤 수든 될수 있기 때문에 모두 당첨번호가 되 었을 경우가 가장 최고의 경우의 수가 되고, 그러므로 리스트내의 0의 갯수에 교집합의 갯수를 더한 수가 최고의 당첨 경우가 된다.

0개의 댓글