say repository

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

알고리즘 문제 풀이/프로그래머스

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

부끄러엇피치 2022. 3. 22. 00:42
728x90

출처 : 프로그래머스

 

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

 

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

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

programmers.co.kr

def solution(lottos, win_nums):
    ranking = [6, 6, 5, 4, 3, 2, 1] # 순위가 인덱스인 일치하는 개수 배열
    cnt = 0 # 당첨 개수
    for i in lottos:
        if i in win_nums:
            cnt += 1
    count0 = lottos.count(0) # 0 의 개수

    return [ranking[cnt+count0], ranking[cnt]]

풀이1

로또번호와 일치하는 개수 배열 ranking  : 순위를 인덱스로 한다.

 

def solution(lottos, win_nums):
    rank = {
        0: 6,
        1: 6,
        2: 5,
        3: 4,
        4: 3,
        5: 2,
        6: 1
    }
    return [ rank[len(set(lottos) & set(win_nums)) + lottos.count(0)], rank[len(set(lottos) & set(win_nums))]]

풀이2

딕셔너리를 활용한다.

두 배열의 공통값을 빠르게 구하는 방법

set(list1) & set(list2)