1 분 소요

문제 링크

내 풀이

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 함수의 이용

댓글남기기