[algorithm][python] 프로그래머스 로또의 최고 순위와 최저 순위
5633 단어 programmerspythonprogrammers
문제
2021 Dev-Matching: 웹 백엔드 개발자(상반기) | 로또의 최고 순위와 최저 순위
문제 풀이
def solution(lottos, win_nums):
lank = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6} # 일치한(맞힌) 번호 갯수에 따른 순위 정보
zero_cnt = lottos.count(0)
min = len(set(lottos) & set(win_nums)) # 확실히 맞힌 원소의 개수 : 최저 순위
max = min + zero_cnt # 최대한으로 맞혔다고 가정했을 때, 맞힌 원소의 개수 : 최고 순위
return [lank[max], lank[min]] # 최고 순위, 최저 순위
print(solution([45, 4, 35, 20, 3, 9],[20, 9, 3, 45, 4, 35]))
lank
: 로또 번호는 6개로 고정되어있기 때문에 딕셔너리로 순위정보를 표현할 수 있다. 일치하는 원소 개수가 1개이거나 0개인 경우는 6위로 표기했다.zero_cnt
: 로또 리스트에서 0의 개수를 카운트한다.min
: 두 리스트에서 공통 원소의 개수로, 각 리스트를 집합으로 만들어 교집합을 구했다. 이는 최저 순위를 구하기위해 사용될 key이다.max
: 확실하게 맞힌 원소에 0의 개수를 더한다. 이는 최고 순위를 구하기위해 사용될 key이다. 0은 모르는 숫자로 표기한 것이기 때문에 0을 맞힌 숫자로 가정해서 최고 순위를 구하려는 것이다.lank[max], lank[min]
: min, max를 key로 하여 순위를 구한다.
새롭게 알게된 점
교집합을 사용하고 싶은데 어떤 기호인지 기억이 안나서 구글링했다..
교집합은 '&'를 사용한다!!
min = len(set(lottos) & set(win_nums))
Author And Source
이 문제에 관하여([algorithm][python] 프로그래머스 로또의 최고 순위와 최저 순위), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zini/algorithmpython-프로그래머스-로또의-최고-순위와-최저-순위저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)