Python/CoTe

[programmers] 로또의 최고 순위와 최저 순위

joannekim0420 2022. 2. 21. 21:49
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인 개수 세기

2. 로또와 일치하는 번호 개수 세기(실제로 로또의 번호들이 무엇인지는 상관 없음) - set 집합 함수와 &연산자 이용

3. 1번과 2번을 이용한 worst_rank, best_rank 구하기

    - dictionary나 새로운 판별 함수를 쓸까 하다가, 7에서 빼는 방법으로 사용 

 

def solution(lottos, win_nums):
    answer = []
    
    count_zero = lottos.count(0) #사라져서 보기 힘든 번호
    matching_nums = len(set(lottos) & set(win_nums)) #로또 번호와 일치하는 번호
    worst_rank = 7-matching_nums
    best_rank = 7-(matching_nums+count_zero)
    
    if worst_rank >=6 :
        worst_rank = 6
    
    #case 14 실패
    if best_rank >= 6 :
        best_rank = 6
    answer.append(best_rank)
    answer.append(worst_rank)
    return answer

case14만 실패!

- 로또와 맞는 번호도 없고 0인 번호도 없을 때 best_rank 도 처리해주는 조건 필요