본문 바로가기

~2023

[Python] 로또의 최고 순위와 최저 순위 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

728x90
반응형

<문제 링크>

 

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

 

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

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

programmers.co.kr

 


<풀이>

 

낙서가 되어 있는 나의 로또 번호와 1등 당첨 로또 번호가 주어졌을 때 로또의 최고 순위와 최저 순위를 출력으로 내는 문제이다.

낙서 된 부분은 0으로 표시되는데 0이 맞는 부분이면 맞은 부분이 0의 갯수만큼 +한 다음에 최고 순위를 구하고 0이 맞지 않는 부분이라면 0을 제외한 현재 로또 번호 중 맞는 부분의 갯수를 세어 최저 순위를 구한다.

순위 조건은 다음과 같고 6등 같은 경우는 따로 표기하기 위해 -1로 표현했다.

순위 당첨 내용
1 6개 번호가 모두 일치
2 5개 번호가 일치
3 4개 번호가 일치
4 3개 번호가 일치
5 2개 번호가 일치
6 그 외
def solution(lottos, win_nums):
    answer = [0, 0]
    equal_count = 0
    zero_count = 0
    RANK = {
        "-1": 6 , "2": 5, "3": 4, "4": 3, "5": 2, "6": 1
    }
    
    for i in range(len(win_nums)):
        if lottos[i] == 0:
            zero_count += 1
        for j in range(len(win_nums)):
            if win_nums[i] == lottos[j]:
                equal_count += 1
    
    answer[0] = RANK[f"{equal_count + zero_count if equal_count + zero_count > 1 else -1}"]
    answer[1] = RANK[f"{equal_count if equal_count > 1 else -1}"]
    
    return answer

 

728x90
반응형