문제

 

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

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

programmers.co.kr

 

로또 번호로 가능한 최고 등수와 최저 등수를 리턴하는 문제이다.

로또 숫자는 1~45인데, 0인 경우는 알아볼 수 없는 숫자이다.

그래서 0의 개수에 따라 가능한 최고 등수가 바뀐다.

 

 

14번 케이스만 계속 틀려서 시간이 좀 걸렸는데 0의 개수도 없고 6개 다 틀린경우를

생각하지 못했다ㅠ 어떤 문제든 제약사항을 잘 고려해야 하는 것 같다.

 

 

풀이 (Python)

def solution(lottos, win_nums):
    #0 없앰
    notzero = set(lottos) 
    if 0 in notzero: notzero.remove(0) #0이 한개일 경우 
    
    if len(notzero)==0: return [1,6]

    zero_cnt = len(lottos) - len(notzero) #0 개수
    lotto_len = len(set(win_nums)-set(notzero)) #1등과 차이 개수 
    
    if lotto_len==0: return [1,1]
    elif zero_cnt==0 and lotto_len==6: return [6,6]
    else:
        if zero_cnt==0: return [lotto_len+1,lotto_len+1]
        else: return [lotto_len-zero_cnt+1,lotto_len+1]

 

파이썬 쏠!

 

반응형

+ Recent posts