Algorithm

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

욜스터 2021. 11. 23. 02:58
728x90

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

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

문제

순위 당첨 내용
1 6개 번호가 모두 일치
2 5개 번호가 일치
3 4개 번호가 일치
4 3개 번호가 일치
5 2개 번호가 일치
6(낙첨) 그 외

input: 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums

output: 당첨 가능한 최고 순위와 최저 순위를 차례대로 담은 배열

 

코드

처음에 작성한 내 코드

def solution(lottos, win_nums):
    rules = {6:1, 5:2, 4:3, 3:4, 2:5}
    answer = []
    num = 0
    for w in win_nums:
        if w in lottos:
            num += 1
    zeros = lottos.count(0)

    if num+zeros in rules:
        answer.append(rules[num+zeros])
    else:
        answer.append(6)
    if num in rules:
        answer.append(rules[num])
    else:
        answer.append(6)
    return answer

그냥 생각나는데로 작성했는데... 다른 사람들의 풀이를 보니 놀라웠다.

 

감명받아서 다시 작성해본 코드

def solution(lottos, win_nums):
    rules=[6,6,5,4,3,2,1]
    answer = []
    num = len(set(lottos) & set(win_nums))
    zeros = lottos.count(0)
    
    answer = [rules[num+zeros], rules[num]]
    return answer

 

728x90
반응형