본문 바로가기
코딩공부/프로그래머스 (python)

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

by CodingKwon 2022. 3. 23.

문제 링크 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/77484?language=python3# 

 

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

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

programmers.co.kr

 

나의 코드 (Python)

def solution(lottos, win_nums):

    chk = 0     # 맞은 갯수
    cnt_0 = lottos.count(0)     # 로또에 0 값은 몇개?
    
    for i in lottos:
        if i in win_nums:
            chk += 1    # 맞다면 카운팅

    # 최고순위
    # 맞춘개수 : 0, 0_카운팅 : 0 인 경우 -> 6등
    # 나머지 경우 -> 7 - 맞춘갯수 - 0_카운팅

    # 최저순위
    # 맞춘개수 : 0 인 경우 -> 6등
    # 나머지 경우 -> 7 - chk 

    answer = [6 if chk == 0 and cnt_0 == 0 else 7-chk-cnt_0 , 6 if chk == 0 else 7-chk]

    return answer

 

1. 로또를 맞춘 개수를 카운팅

2. 로또에서 0의 개수를 카운팅

3. 최고 순위와 최소 순위를 구함

 

위와 같은 풀이 방식에 경우 조건문을 이용하여 풀었지만 제출 이후 다른 사람들의 풀이를 본 결과

rank = [6, 6, 5, 4, 3, 2, 1]과 같은 순위에 관한 배열을 만들고 인덱스를 활용하여 푸는 방법이 더 좋다고 느껴진다.

 

 

댓글