문제 설명
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다.
아래는 로또의 순위를 정하는 방식입니다.
제한 사항
입출력 예
나의 풀이(전체 코드)
def solution(lottos, win_nums):
answer = [6,6,5,4,3,2,1]
count1 = count2 = 0
for i in range(len(lottos)):
if lottos[i] in win_nums:
count1 += 1
for i in range(len(lottos)):
if (lottos[i] == 0) and (lottos[i] not in win_nums):
lottos[i] = win_nums[i]
if lottos[i] in win_nums:
count2 += 1
high_rank = answer[count2]
low_rank = answer[count1]
return [high_rank, low_rank]
해당 문제는 우리가 기존에 알고 있던 로또의 당첨 조건과는 다른 아래의 조건으로 해결해야 한다
순위 | 당첨 기준 |
1등 | 당첨번호 6개 숫자 일치 |
2등 | 당첨번호 5개 숫자 일치 |
3등 | 당첨번호 4개 숫자 일치 |
4등 | 당첨번호 3개 숫자 일치 |
5등 | 당첨번호 2개 숫자 일치 |
낙첨 | 그 외 |
그래서 우리는 순위를 나타내는 리스트를 작성해준다. 이때, 낙첨은 당첨번호가 1개 일치 혹은 0개라는 사실을 알고 있기 때문에 아래와 같이 작성해준다.
또한, 최저 순위와 최고 순위를 카운트해주는 변수도 0으로 초기화해준다.
answer = [6,6,5,4,3,2,1]
count1 = count2 = 0
그 다음으로는 입력받은 로또 번호가 당첨 번호와 일치하는지, 일치한다면 최저 순위 변수인 count1 변수를 1 증가시켜준다.
for i in range(len(lottos)):
if lottos[i] in win_nums:
count1 += 1
다음 단계는 최고 순위를 계산하는 단계이다.
for i in range(len(lottos)):
if (lottos[i] == 0) and (lottos[i] not in win_nums):
lottos[i] = win_nums[i]
if lottos[i] in win_nums:
count2 += 1
만약 주어진 로또 번호가 0 '이고' 당첨 번호에 포함되어 있지 않다면, 해당 리스트의 변수는 당첨번호로 대체한다.
그다음 변경된 로또 번호가 당첨 번호에 포함되어 있다면 최고 순위 변수인 count2 변수를 1 증가시켜 준다.
마지막은 최고 순위와 최저 순위를 기존에 선언했던 answer 리스트를 사용하여 return 해주면 끝이 난다.
high_rank = answer[count2]
low_rank = answer[count1]
return [high_rank, low_rank]
해당 문제는 기존의 로또 순위 방식과 다르다는 것만 인지하면 크게 어려운 부분은 아니었다고 생각한다!
'문제풀이' 카테고리의 다른 글
[프로그래머스] level1 약수의 개수와 덧셈(python) (0) | 2022.05.27 |
---|---|
[프로그래머스] Level1 3진법 뒤집기 (파이썬) (0) | 2022.05.23 |
[백준] 1408번 파이썬 풀이 (0) | 2022.04.01 |
[백준] 1173번 파이썬 풀이 (0) | 2022.04.01 |
[백준] 1371번 파이썬 풀이 (0) | 2022.03.28 |