Counter
from collections import Counter
c = Counter("aab")
c.most_common(1) # [('a', 2)]
빈도 문제에 해시맵을 직접 쓰기 전에 Counter를 떠올리세요.
defaultdict
from collections import defaultdict
g = defaultdict(list)
g[1].append(2)
그래프 인접 리스트·그룹핑에 유용합니다.
정렬 키
rows.sort(key=lambda x: (x[1], -x[0]))
튜플 키로 다중 기준 정렬이 쉽습니다.
언제 안 쓰나
한두 줄이면 내장 dict로 충분합니다. 문제 문구의 허용 범위를 확인하세요.
연습
아나그램·단어 빈도 계열을 Counter로 다시 풀어 길이를 비교해 보세요.
deque 맛보기
from collections import deque
q = deque([1, 2])
q.append(3)
q.popleft()
큐·BFS에 리스트 pop(0) 대신 씁니다.
한 줄
> 빈도=Counter, 그룹=defaultdict, 큐=deque.
체크리스트
- 빈도만? → Counter
- 키마다 리스트? → defaultdict(list)
- 앞/뒤 삽입 삭제가 잦은 큐? → deque
- import가 문제에서 막혀 있나?
표준을 쓰면 실수가 줄지만, 알고리즘 이해를 대체하지는 않습니다.
한 줄: Counter·defaultdict·deque로 보일러플레이트를 줄인다.
예: 그룹핑
from collections import defaultdict
buckets = defaultdict(list)
for word in words:
buckets[''.join(sorted(word))].append(word)
아나그램 묶기에 바로 쓰입니다. 해시 원리 레슨과 함께 보면 좋습니다.