파이썬/알고리즘 문제 풀이

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

유자차H 2022. 2. 22. 00:26
반응형

문제 : Lv1. 로또의 최고 순위와 최저 순위


문제 핵심

이 문제는 list의 count라는 기능을 사용하여 푸는 것이 핵심이라고 생각이 듭니다.

리스트명.count(찾는 것) : 리스트 안에 찾는 것의 갯수 나옴.


 

풀이 1

숫자가 많을 경우를 생각하여, for문을 사용하지 않으려고 풀이1같은 방법으로 문제를 해결하였습니다.

하지만 6개의 숫자만 확인하면 되는 것으로 for문을 사용하여 풀이2도 만들어 보았습니다.

def solution(lottos, win_nums):

    # 알 수 없는 번호 갯수 구하기
    zero_num = lottos.count(0)

    # 일치하는 번호
    lottos = set(lottos)
    win_nums = set(win_nums)
    correct_nums = len(win_nums.intersection(lottos))

    # 가능한 최고/최저 순위 구하기
    max_rank = 7 - (correct_nums + zero_num)
    min_rank = 7 - (correct_nums)
    # 예외처리) 알 수 없는 숫자 없음 & 일치하는 숫자가 없음
    if max_rank >= 6:
        max_rank = 6
    # 예외처리) 일치하는 숫자가 없음
    if min_rank >= 6:
        min_rank = 6

    answer = [max_rank, min_rank]
    return answer

 

풀이 2

def solution(lottos, win_nums):

    # 알 수 없는 번호 갯수 구하기
    zero_num = lottos.count(0)

    # 일치하는 번호
    correct_num = 0
    for num in lottos:
        if num in win_nums:
            correct_num += 1

    # 등수 구하기
    rank = [6,6,5,4,3,2,1]
    max_rank = rank[correct_num+zero_num]
    min_rank = rank[correct_num]

    answer = [max_rank, min_rank]
    return answer
반응형