TIL-39. [코딩테스트] 프로그래머스 lv1. 로또 번호 최고 순위, 최저 순위 구하기

solarrrrr·2022년 1월 8일
0

Today I Learned

목록 보기
39/74
post-thumbnail

프로그래머스 lv1. 로또 번호 최고 순위, 최저 순위 구하기 문제를 풀어보았다.
무작위로 들어가 있는 0은 당첨번호일 수도, 아닐 수도 있다는 조건이며
이를 통해 최고 순위와 최저 순위를 구하는 문제이다.

def solution(lottos, win_nums):
    zero   = lottos.count(0) # 0의 개수 확인
    result = len(list(set(lottos).intersection(win_nums))) # 당첨 번호의 개수 확인
    return rank(zero+result), rank(result)

def rank(result):
    if result == 6:
        return 1
    elif result == 5:
        return 2
    elif result == 4:
        return 3
    elif result == 3:
        return 4
    elif result == 2:
        return 5
    else:
        return 6

0을 제외한 숫자 중 당첨 번호와 일치하는 숫자의 개수를 구한다.
이 값이 최저 순위일 것이다.
그리고 이 값에 0의 개수를 모두 더하면 최고 순위가 될 것이다.

set 함수를 이용해 풀었는데
문제는 맞힌 개수와 등수를 매칭해야 하는데
if.. else밖에 떠오르질 않았다. ㅜㅜ

그냥 함수 쪼개서 해 놓은 뒤
다른 분들 문풀 보니까 리스트를 이용해 쉽게 구현해 놓은 걸 봤다.

하나 배웠다.

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]
    
profile
몰입

0개의 댓글