-
77484. 로또의 최고 순위와 최저 순위(Python, Programmers Level 1)Programmers 2022. 9. 4. 00:36
문제 설명
주어진 숫자를 바탕으로 만들 수 있는 로또의 최고 순위와 최저 순위를 알아냅니다.
구매한 로또 번호 중 0은 현재 알 수 없는 숫자입니다.
최고 순위는 가장 많은 숫자를 맞아야 하기에, 모르는 숫자를 맞은 것으로 가정합니다.
최저 순위는 가장 적은 숫자를 맞아야 하기에, 모르는 숫자를 틀린 것으로 가정합니다.
이 가정으로 나오는 최고 순위와 최저 순위를 반환합니다.
코드
로또 번호 중 몇 개가 맞았고 몇 개가 틀렸는지 알아야 합니다.
하지만, lottos에 제시된 숫자 중 0은 알 수 없는 숫자입니다.
알 수 없는 숫자의 개수와 정확하게 맞은 숫자의 개수를 계산합니다.
dont_know_count = 0 win_count = 0 for num in lottos: if num == 0: dont_know_count += 1 elif num in win_nums: win_count += 1
최고 순위는 모르는 숫자를 맞은 것으로 가정합니다.
모든 숫자를 틀린 경우를 제외하고, 로또의 등수는 7 - 맞은 문제의 수 입니다.
모든 숫자를 틀리는 경우, 7등이 될 수 있어 해당 순위에 보정이 필요합니다.
best = min(6, 7 - dont_know_count - win_count)
최저 순위는 모르는 숫자를 틀린 것으로 가정합니다.
worst = min(6, 7 - win_count)
더보기def solution(lottos, win_nums): dont_know_count = 0 win_count = 0 for num in lottos: if num == 0: dont_know_count += 1 elif num in win_nums: win_count += 1 best = min(6, 7 - dont_know_count - win_count) worst = min(6, 7 - win_count) return [best, worst] if __name__ == '__main__': result = solution([44, 1, 0, 0, 31, 25], [31, 10, 45, 1, 6, 19]) print([3, 5] == result, result) result = solution([0, 0, 0, 0, 0, 0], [38, 19, 20, 40, 15, 25]) print([1, 6] == result, result) result = solution([45, 4, 35, 20, 3, 9], [20, 9, 3, 45, 4, 35]) print([1, 1] == result, result)
'Programmers' 카테고리의 다른 글
81301. 숫자 문자열과 영단어(Python, Programmers Level 1) (0) 2022.09.04 72410. 신규 아이디 추천(Python, Programmers Level 1) (0) 2022.09.04 86491. 최소직사각형(Python, Programmers Level 1) (0) 2022.09.04 12906. 같은 숫자는 싫어(Python, Programmers Level 1) (0) 2022.09.04 92334. 신고 결과 받기(Python, Programmers Level 1) (0) 2022.09.04