로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.....
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
lottos | win_nums | result |
---|---|---|
[44, 1, 0, 0, 31, 25] | [31, 10, 45, 1, 6, 19] | [3, 5] |
[0, 0, 0, 0, 0, 0] | [38, 19, 20, 40, 15, 25] | [1, 6] |
[45, 4, 35, 20, 3, 9] | [20, 9, 3, 45, 4, 35] | [1, 1] |
순위 | 당첨 내용 |
---|---|
1 | 6개 번호가 모두 일치 |
2 | 5개 번호가 일치 |
3 | 4개 번호가 일치 |
4 | 3개 번호가 일치 |
5 | 2개 번호가 일치 |
6 | 그 외 |
def solution(lottos, win_nums):
answer=[]
cnt=0
zero = lottos.count(0)
rank = {6:1,5:2,4:3,3:4,2:5,1:6,0:6}
mx = 0
mn = 0
if zero ==0:
for i in lottos:
for j in win_nums:
if i==j:
cnt+=1
answer = [rank[cnt], rank[cnt]]
return answer
else:
for i in lottos:
for j in win_nums:
if i==j:
cnt+=1
mn = cnt
mx = cnt+zero
answer = [rank[mx], rank[mn]]
return answer
answer: 최고 순위와 최저 순위를 담는 리스트
zero: 로또 번호 중 0의 개수
mx: 제일 많이 일치하는 개수
mn: 제일 적게 일치하는 개수
if zero ==0:
for i in lottos:
for j in win_nums:
if i==j:
cnt+=1
answer = [rank[cnt], rank[cnt]]
return answer
for i in lottos:
for j in win_nums:
if i==j:
cnt+=1
mn = cnt
mx = cnt+zero
answer = [rank[mx], rank[mn]]
return answer
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]
그렇게 어렵지 않은 문제였으나, 일단 직관적으로 빨리 코드를 짜버리려는 습관 때문에 코드가 길게 나온 것 같다........
코드를 간결하게 짜려는 습관을 길러봐야겠다!
출처: 프로그래머스