알고리즘/문제풀이
[Python] Programmers 로또의 최고 순위와 최저 순위
정찡이
2021. 8. 14. 20:13
728x90
1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/77484
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
2. 문제 요약
구매한 로또에 0이 표기되어 있고, 당첨 번호가 주어진다. 당첨 가능한 최고 순위와 최저 순위를 리턴한다.

3. 아이디어 정리
- 내 로또 번호를 한 개씩 for문을 돌린다.
- 0이 아닌 경우 win_nums(당첨번호)에 들어가는지 확인한다.
- 최저 순위 관련 변수에는 0의 개수 만큼 당첨 횟수를 늘려준다.
- 로또 순위 정하는 방식에 따라 결과를 리턴한다.
4. 문제 풀이
4-1. 내 풀이
def ranking(count):
"""
랭킹 정보 리턴
"""
return 1 if count == 6 else 2 if count == 5 else 3 if count == 4 else 4 if count == 3 else 5 if count == 2 else 6
def solution(lottos, win_nums):
answer = [0, 0]
count_z = lottos.count(0) # 0의 수
win_nums = set(win_nums)
# 내 로또 번호를 한 개씩 for문을 돌린다.
for lotto in lottos:
if lotto == 0:
continue
if lotto in win_nums: # 0이 아닌 경우 win_nums(당첨번호)에 들어가는지 확인한다.
answer[0] += 1
answer[1] += 1
win_nums.remove(lotto)
# 2. 최저 순위 관련 변수에는 0의 개수 만큼 당첨 횟수를 늘려준다.
if count_z:
answer[1] += count_z
# 3. 로또 순위 정하는 방식에 따라 결과를 리턴한다.
return (ranking(answer[1]), ranking(answer[0]))
5. 결론
- 단순한 구현 문제다.
반응형