def solution(lottos, win_nums):
set_lottos = set(lottos)
win_nums = set(win_nums)
tmp = len(set_lottos & win_nums)
if tmp < 2:
if lottos.count(0) + tmp < 2:
return [6, 6]
else:
return sorted([6, 7-(len(set_lottos & win_nums) + lottos.count(0))])
else:
return sorted([7 - tmp, 7-(len(
set_lottos & win_nums) + lottos.count(0))])
def solution(lottos, win_nums):
rank = {0: 6, 1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: 1}
return rank[len(set(lottos) & set(win_nums)) + lottos.count(0)], rank[len(set(lottos) & set(win_nums))]
❓ Python에서는 "딕셔너리"라는 자료구조를 통해 해시를 제공한다
❓ 언제 사용하면 좋을까
리스트를 쓸 수 없을 때
리스트는 인덱스를 사용해 접근이 가능하지만 인덱스의 값이 숫자가 아닌 문자열이나 튜플의 형태를 가질 경우 딕셔너리를 사용한다
빠른 접근, 제거, 탐색이 필요한 경우
딕셔너리의 시간복잡도는 대부분이 O(1)이기 때문에 빠른 처리가 가능하다
집계가 필요한 경우
원소의 개수를 세는 경우 해시, collections모듈의 Counter클래스를 사용하면 빠르게 해결할 수 있다.
해시를 이용하는 방법을 구글링하면서 생각해내긴 했지만
왜 해시를 이용했을 때 예외 처리가 별도의 과정없이 바로 해결되는지 이해가 잘 안된다