DataStructure
[DataStructure] Python 자료구조별 시간 복잡도 정리
chesleashin
2021. 4. 27. 23:04
Python 자료구조별 시간 복잡도 정리
리스트 자료형과 메서드의 시간 복잡도
|
Operation |
Example |
Class |
Notes |
1 |
Index |
l[i] |
O(1) |
인덱스로 값 찾기 |
2 |
Store |
l[i] = 0 |
O(1) |
인덱스로 데이터 저장 |
3 |
Length |
len(l) |
O(1) |
리스트 길이 |
4 |
Append |
l.append(5) |
O(1) |
리스드 뒤에 데이터 저장 |
5 |
Pop |
l.pop() |
O(1) |
가장 뒤의 데이터 pop |
6 |
Clear |
l.clear() |
O(1) |
l = [] |
7 |
Slice |
l[a:b] |
O(b-a) |
슬라이싱되는 요소들 수 만큼 비례 |
8 |
Extend |
l.extend(...) |
O(len(...)) |
확장되는 길이만큼 |
9 |
Construction |
list(...) |
O(len(...)) |
리스트 길이만큼 |
10 |
check ==, != |
l1 == l2 |
O(N) |
전체 리스트가 동일한지 확인 |
11 |
Insert |
l[a:b] = ... |
O(N) |
데이터 삽입 |
12 |
Delete |
del l[i] |
O(N) |
데이터 삭제 |
13 |
Containment |
x in/not in l |
O(N) |
포함 여부 확인 |
14 |
Copy |
l.copy() |
O(N) |
복제 |
15 |
Remove |
l.remove(...) |
O(N) |
제거 |
16 |
Pop |
l.pop(i) |
O(N) |
제거된 값 이후를 전부 한칸씩 당겨줘야함 |
17 |
Extreme value |
min(l)/max(l) |
O(N) |
전체 데이터를 확인해야함 |
18 |
Reverse |
l.reverse() |
O(N) |
뒤집기 |
19 |
Iteration |
for v in l: |
O(N) |
전체 데이터 확인하므로 |
20 |
Sort |
l.sort() |
O(N Log N) |
파이썬 기본 정렬 알고리즘 |
21 |
Multiply |
k*l |
O(k N) |
리스트의 곱은 리스트 개수 늘어남 |
집합(set) 자료형과 메소드의 시간 복잡도
|
Operation |
Example |
Class |
Notes |
1 |
Add |
s.add(5) |
O(1) |
집합 요소 추가 |
2 |
Containment |
x in/not in s |
O(1) |
포함 여부 확인 |
3 |
Remove |
s.remove(..) |
O(1) |
요소 제거 |
4 |
Discard |
s.discard(..) |
O(1) |
특정 요소 제거 |
5 |
Pop |
s.pop() |
O(1) |
랜덤하게 하나 pop |
6 |
Clear |
s.clear() |
O(1) |
similar to s = set() |
7 |
Construction |
set(...) |
O(len(...)) |
길이만큼 |
8 |
check ==, != |
s != t |
O(len(s)) |
전체 요소 동일 여부 확인 |
9 |
<=/< |
s <= t |
O(len(s)) |
부분집합 여부 |
10 |
>=/> |
s >= t |
O(len(t)) |
부분집합 여부 |
11 |
Union |
s, t |
O(len(s)+len(t)) |
합집합 |
12 |
Intersection |
s & t |
O(len(s)+len(t)) |
교집합 |
13 |
Difference |
s - t |
O(len(s)+len(t)) |
차집합 |
14 |
Symmetric Diff |
s ^ t |
O(len(s)+len(t)) |
여집합 |
15 |
Iteration |
for v in s: |
O(N) |
전체 요소 순회 |
16 |
Copy |
s.copy() |
O(N) |
복제 |
딕셔너리(Dictionary) 자료형과 메소드의 시간 복잡도
|
Operation |
Example |
Class |
Notes |
1 |
Store |
d[k] = v |
O(1) |
데이터 저장 |
2 |
Length |
len(d) |
O(1) |
길이 출력 |
3 |
Delete |
del d[k] |
O(1) |
요소 제거 |
4 |
get/setdefault |
d.get(k) |
O(1) |
key에 따른 value 확인 |
5 |
Pop |
d.pop(k) |
O(1) |
pop |
6 |
Pop item |
d.popitem() |
O(1) |
랜덤하게 선택해서 pop |
7 |
Clear |
d.clear() |
O(1) |
similar to s = {} or = dict() |
8 |
View |
d.keys() |
O(1) |
same for d.values() / 키값 전체 확인 |
9 |
Construction |
dict(...) |
O(len(...)) |
(key, value) 튜플 개수만큼 |
10 |
Iteration |
for k in d: |
O(N) |
전체 딕셔너리 순회 |