연습장
5. 로또의 최고 순위와 최저 순위 본문
문제 해석
기존의 로또와 다르지만 아무튼 문제를 풀어보자면
lottos : 구입한 로또 번호
win_nums : 당첨된 로또 번호
0 -> 알수 없는 숫자
0 이 아닌 숫자에 대해서는 고정된 값이며 0 에는 어떤 숫자든지 들어갈수 있고
이를 이용하여 최고 순위, 최저 순위를 예상해보자는 문제이다.
풀이 방법
1. 0 의 갯수를 확인한다.
2. 0을 뺀 나머지 숫자중에서 몇개가 일치하는지 확인한다.
3. 최고와 최저에 대해서 계산해본다.
순위를 매기는 방법을 보니까
6개가 일치하면 1등
5개가 일치하면 2등
만약 7에서 일치할때마다 1씩 뺸다면 다음과 같이 순위를 매길 수 있으며
확정된 숫자에 대해서 먼저 순위를 매기고 나머지 0의 갯수만큼 예상 순위 처리를 해주면 된다.
+ 전부다 틀릴경우 7위가 되게 되므로 -> 6 위로 고쳐준다.
def solution(lottos, win_nums):
answer = []
grade = 7
zero_num = 0
for num in lottos:
# 숫자가 0 이면
if num == 0:
zero_num +=1
# 0 이아니고
else :
# 당첨번호에 존재하면
if num in win_nums:
grade -= 1
# 최고 순위
# 지워진 숫자만큼 반영
answer.append(grade-zero_num)
# 최저 순위
answer.append(grade)
# 7 등이 나올경우 6등으로 변환
if answer[0] == 7:
answer[0] = 6
if answer[1] == 7:
answer[1] = 6
return answer