728x90
https://programmers.co.kr/learn/courses/30/lessons/77484
프로그래머스에서 level 1 연습문제인 '로또의 최고 순위와 최저 순위' 문제를 풀었다.
for문을 사용하지 않고 번호가 일치하는지 아닌지 비교하는 방법을 떠올리기가 힘들었던 문제였다.
찾아보니 set에서 & 연산으로 공통인 요소를 뽑아낼 수 있었고 이를 사용해 맞춘 번호의 개수를 알아냈다.
정답 코드
def solution(lottos, win_nums):
low_num = len(set(lottos) & set(win_nums))
hight_num = low_num + lottos.count(0)
win = [6,6,5,4,3,2,1]
answer = [win[hight_num], win[low_num]]
return answer
set의 & 연산으로 맞춘 번호의 개수를 알아냈고 거기에 0을 전부 맞춘 번호라고 가정한 후 개수를 더해주었다.
이 다음 단계에서 애를 먹었는데, 이 개수를 가지고 바로 등수를 구하려고 했는데 잘 되지 않아서 구글링을 많이 했다.
여러 블로그를 찾아보니 win이라는 리스트에 등수를 넣어서 맞춘 개수를 인덱스로 사용하였더라.
처음엔 생각없이 6개만 넣었는데 인덱스는 -1이기 때문에 맨 앞에 의미없는 6을 추가해서 제대로 된 등수를 구할 수 있게끔 했다.
728x90