-
[Programmers] 로또의 최고 순위와 최저 순위programing/Algorithm 2021. 5. 23. 18:22
로또의 최고 순위와 최저 순위
level 1
2021 Dev-Matching: 웹 백엔드 개발자(상반기)
python 3
def getOrder(n): if n < 2: return 6 else: return 6 - n + 1 def solution(lottos, win_nums): zeroNum = lottos.count(0) lottoSet = set(lottos) winSet = set(win_nums) intersection = lottoSet.intersection(winSet) _min = len(intersection) restWinSet = winSet.difference(intersection) _max = min([zeroNum, len(restWinSet)]) + _min return [getOrder(_max), getOrder(_min)]
집합을 이용해 쉽게 구할 수 있습니다.
선택한 로또 번호와, 당첨 번호를 각각 set으로 만든 뒤, 교차집합을 구하면 결정된 로또 번호 집합을 구할 수 있습니다. 이 intersection의 길이를 구하면 최저 로또 등수를 구할 수 있습니다.
이제 최대 로또 등수를 구하기 위해, 로또 결과에 영향을 끼칠 수있는, 결정되지 않은 숫자의 개수만 구하면 됩니다.
winSet - lottoSet 인 여집합(restWinSet) 을 구합니다. 여기서 0의 개수와 여집합의 개수 중 최소값이 로또 등수를 올릴 수 있는 최대 번호 개수입니다.
최저 등수 번호 개수인 _min 과 최대 등수 번호 개수인 _max를 구해서, 등수를 구한 뒤 배열로 만들어 반환하면 됩니다.
'programing > Algorithm' 카테고리의 다른 글
큰 수의 법칙 (0) 2021.07.23 [Programmers] 문자열 압축 (0) 2021.07.04 [Programmers] 음양 더하기 (0) 2021.05.23 [programmers] 약수의 개수와 덧셈 (0) 2021.05.15 [Programmers] 124 나라의 숫자 (0) 2021.04.18 댓글