알고리즘 풀이 접근 방법 정리
시간 초과가 발생했다면, 기존 방법에서 "미세한 튜닝"을 하지 말고 ✨과감하게 방향 전환✨하라.
✨구조적인 관점에서 loop를 줄이는 방향✨으로 접근한다.
loop을 다 줄였다면, ✨같은 작업은 낮은 복잡도로 해결✨할 수 있는 방법에 대해서 고민하자.
len(set(list))
len(Counter(list))
len(defaultdict(list))
🎇stack
🎇queue
from collections import deque
🎇dictionary
🎇default dictionary
from collections import defaultdict
dfdict = defaultdict(lambda : 0)
key값이 새로운 값이라면 자동으로 0으로 인식.🎇array list
{'key1' : [1, 2, 3, 4], 'key2' : [1, 2, 4, 6]}
이런걸 key1 = 0, key2 = 1 이렇게 암묵적으로 생각하여 생성dict = {'key1' : [1, 2, 3, 4], 'key2' : [1, 2, 4, 6]}
arraylist = [[1, 2, 3, 4],
[1, 2, 4, 5]]
🎇priority queue
import heapq
heapq.heappush(list, value)
heapq.heappop(list)
🎇set
set1 | set2
set1 & set2
set1 - set2
자료형 | 작업 | 시간 복잡도 | 추가 설명 |
---|---|---|---|
list | append | ||
list | sort | ||
list | reverse | ||
list | insert | ||
list | count | ||
list | remove | ||
set | add | ||
set | update | ||
set | remove | ||
dict | in | 존재 여부 확인 | |
heapq | push | ||
heapq | pop |
🎇list와 deque 비교
작업 | 리스트 | deque |
---|---|---|
가장 앞에 원소 추가 | ||
가장 뒤에 원소 추가 | ||
가장 앞에 원소 제거 | ||
가장 뒤에 원소 제거 |