Problem Solving/Programmers
프로그래머스 (Level 1) : 로또의 최고 순위와 최저 순위 / Python / 2021 Dev-Matching: 웹 백엔드 개발자(상반기)
eroke
2022. 7. 4. 23:02
문제
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 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]
반응형