✔️ code
def solution(lottos, win_nums):
answer = []
score_top=0 #일치하는 숫자 개수(최고 순위 일 때)
score_bottom=0 #일치하는 숫자 개수(최저 순위 일 때)
#일치하는 숫자 개수 계산
score_top += lottos.count(0)
for i in win_nums:
if i in lottos:
score_top+=1
score_bottom+=1
#일치하는 숫자 개수:등수
dic = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}
answer.append(dic[score_top])
answer.append(dic[score_bottom])
return answer
#solve:
일치하는 숫자 개수가 최고점일 때, 최저점일 때가 다르므로 각각 변수를 선언해 주었다.
최고점인 경우에 0은 그대로 맞힌 개수에 들어가므로 반복문 전 0 개수를 세어 +=1 해주었고 반복문에서도
일치하는 숫자가 있다면 다시 +=1 을 해주었다.
최저점인 경우엔 반복문에서 일치하는 숫자가 있는 경우에만 +=1 을 해주었다.
반복문이 끝나면 맞힌 개수에 따라 등수가 나뉘므로 dict 를 사용해 주었다.
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]
#solve:
rank 배열에 등수를 담고 등수의 index 는 맞힌 개수가 된다.
cnt_0 은 lottos 배열 내 0의 개수를 담는 변수이고 ans 는 실제 로또 점수와 일치하는 숫자 개수를 담는 변수이다.
최고점인 경우엔 0의 개수와 숫자 개수를 더해 (lottos 에 0이 2개고 맞힌 개수가 2개 있다면 3등이 된다.) 등수를 판별하고,
최저점인 경우엔 일치하는 숫자 개수만으로 등수를 판별했다.
✏️ 애초에 rank 배열에 등수와 index가 match 되도록 선언했기 때문에 가능했던 풀이
'알고리즘' 카테고리의 다른 글
[CodeUp] 코드업 기초 100제 6097 (0) | 2022.08.17 |
---|---|
[CodeUp] 코드업 기초 100제 6096 (0) | 2022.08.17 |
[프로그래머스] 나누어 떨어지는 숫자 배열 (0) | 2022.04.06 |
[스택] 후위표기식 (0) | 2022.04.02 |
[스택] 쇠막대기 (0) | 2022.03.23 |