(문제 설명)
로또 6/45(이하 “로또”라 함)는 1부터 45까지의 숫자 6개가 일치하는 대표적인 복권입니다.
다음은 복권 순위 결정 방법입니다.
하나
랭킹 우승 내역
하나 | 숫자 6개 모두 일치 |
2 | 숫자 5개 일치 |
삼 | 숫자 4개 일치 |
4 | 숫자 3개 일치 |
5 | 숫자 2개 일치 |
6 (잃어버린) | 등 |
복권을 산 민우는 당첨번호가 발표되기를 기다렸다.
그런데 민우의 남동생이 로또에 낙서를 하고 숫자를 지웠다.
당첨 번호가 발표된 후 민우는 자신이 구매한 복권으로 당첨될 수 있었던 최고 순위와 최저 순위를 알아보고자 했습니다.
알 수 없는 번호 나는 그것을 0으로 표시하기로 했고 민우가 산 로또 번호 6개를 예를 들어 44, 1, 0, 0, 31 25. 당첨 번호 6개 31, 10, 45, 1, 6, 19인 경우 가능한 최대 및 최소 승리의 예는 다음과 같습니다.
당첨번호 3110451619 결과
최고 순위 번호 | 31 | 0→10 | 44 | 하나 | 0→6 | 25 | 숫자 4개 일치, 3승 |
최하위 번호 | 31 | 0→11 | 44 | 하나 | 0→7 | 25 | 숫자 2개 맞추기, 5등 |
- 순서와 관계없이 구매한 복권에 당첨 번호와 일치하는 번호가 있으면 정답으로 인정합니다.
- 인식할 수 없는 두 숫자가 각각 10과 6이고 3등을 받을 수 있다고 가정합니다.
- 3등을 할 수 있는 다른 방법이 있습니다.
그러나 2위를 넘기는 것은 불가능하다.
- 3등을 할 수 있는 다른 방법이 있습니다.
- 인식할 수 없는 두 숫자가 각각 11과 7이라고 가정하면 5등에 당첨될 수 있습니다.
- 5위를 얻는 다른 방법이 있습니다.
단, 6등(추첨)은 불가합니다.
- 5위를 얻는 다른 방법이 있습니다.
민우가 구매한 로또번호 배열 lotto와 당첨번호 배열 win_nums가 파라미터로 주어진다.
이 시점에서 solve 함수를 완성하여 배열에서 가능한 최고 및 최저 승 순위를 정렬하고 반환합니다.
(제한)
- lottos는 길이가 6인 정수 배열입니다.
- Lotto의 모든 요소는 0보다 크고 45보다 작은 정수입니다.
- 0은 인식할 수 없는 숫자를 의미합니다.
- 복권에서 0 이외의 숫자는 두 번 이상 사용되지 않습니다.
- 추첨 요소는 정렬되지 않을 수 있습니다.
- 0은 인식할 수 없는 숫자를 의미합니다.
- win_nums는 길이가 6인 정수 배열입니다.
- win_nums의 모든 요소는 1보다 크거나 같고 45보다 작거나 같은 정수입니다.
- win_nums에는 동일한 숫자가 두 개 이상 포함되지 않습니다.
- win_nums의 요소는 정렬되지 않아야 합니다.
- win_nums에는 동일한 숫자가 두 개 이상 포함되지 않습니다.
(카누 코드)
def solution(lottos, win_nums):
max = 7 - len(set(lottos)& set(win_nums))
max = 6 if max >=6 else max
if 0 in lottos:
min = max - lottos.count(0)
else:
min = max
min = 1 if min ==0 else min
answer = (min,max)
return answer
1. 7에서 내가 선택한 숫자와 정답의 교점의 요소수 빼기 -> 순위 추출
1-1 1 또는 0을 맞추는 사람은 6번이므로 이 경우를 해결하십시오.
2. 숨겨진 숫자가 있는 경우 -> 숨겨진 숫자가 모두 맞으면 최상 => 해당 숫자만큼 위로 이동
2-1 그렇지 않다면 다음과 같이 순위를 매긴다.
2-2 0이 6이면 1이 나와야 하는데 0이 출력되니까 그 경우 처리
(다른 코드)
def solution(lottos, win_nums):
rank=(6,6,5,4,3,2,1)
cnt_0 = lottos.count(0)
ans = 0
for x in win_nums:
if x in lottos:
ans += 1
return rank(cnt_0 + ans),rank(ans)
정답을 사람이 제공한 숫자와 비교하면서 ANS를 높입니다.
순위를 순위로 지정하면 0과 ANS의 숫자를 조합하여 최대/최소 순위를 생성합니다.
예외적인 경우를 구별하는 것보다 이 방법이 더 쉽다고 생각합니다.