파이썬/알고리즘 문제 풀이
[프로그래머스 : Python3]로또의 최고 순위와 최저 순위
유자차H
2022. 2. 22. 00:26
반응형
문제 : Lv1. 로또의 최고 순위와 최저 순위
문제 핵심
이 문제는 list의 count라는 기능을 사용하여 푸는 것이 핵심이라고 생각이 듭니다.
리스트명.count(찾는 것) : 리스트 안에 찾는 것의 갯수 나옴.
풀이 1
숫자가 많을 경우를 생각하여, for문을 사용하지 않으려고 풀이1같은 방법으로 문제를 해결하였습니다.
하지만 6개의 숫자만 확인하면 되는 것으로 for문을 사용하여 풀이2도 만들어 보았습니다.
def solution(lottos, win_nums):
# 알 수 없는 번호 갯수 구하기
zero_num = lottos.count(0)
# 일치하는 번호
lottos = set(lottos)
win_nums = set(win_nums)
correct_nums = len(win_nums.intersection(lottos))
# 가능한 최고/최저 순위 구하기
max_rank = 7 - (correct_nums + zero_num)
min_rank = 7 - (correct_nums)
# 예외처리) 알 수 없는 숫자 없음 & 일치하는 숫자가 없음
if max_rank >= 6:
max_rank = 6
# 예외처리) 일치하는 숫자가 없음
if min_rank >= 6:
min_rank = 6
answer = [max_rank, min_rank]
return answer
풀이 2
def solution(lottos, win_nums):
# 알 수 없는 번호 갯수 구하기
zero_num = lottos.count(0)
# 일치하는 번호
correct_num = 0
for num in lottos:
if num in win_nums:
correct_num += 1
# 등수 구하기
rank = [6,6,5,4,3,2,1]
max_rank = rank[correct_num+zero_num]
min_rank = rank[correct_num]
answer = [max_rank, min_rank]
return answer
반응형