728x90
์๊ฐ ๋ณต์ก๋ in ์ฝ๋ฉํ ์คํธ
N์ด 1000์ผ ๋์ ์ฐ์ฐ ํ์ | |
O(N) | 1000 |
O(NlogN) | 10000 |
O(N^2) | 1000000 |
O(N^3) | 1000000000 |
์๊ฐ ์ ํ์ด 1์ด์ธ ๋ฌธ์ ์ผ ๋
- N์ ๋ฒ์๊ฐ 500์ธ ๊ฒฝ์ฐ: ์๊ฐ๋ณต์ก๋๊ฐ O(N^3)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
- N์ ๋ฒ์๊ฐ 2000์ธ ๊ฒฝ์ฐ: ์๊ฐ๋ณต์ก๋๊ฐ O(N^2)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
- N์ ๋ฒ์๊ฐ 100000(10๋ง)์ธ ๊ฒฝ์ฐ: ์๊ฐ๋ณต์ก๋๊ฐ O(NlogN)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
- N์ ๋ฒ์๊ฐ 10000000(1000๋ง)์ธ ๊ฒฝ์ฐ: ์๊ฐ๋ณต์ก๋๊ฐ O(N)์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ฉด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
๋ฆฌ์คํธ(List)
Operation | Example | Big-O | Notes | |
1 | Index | l[i] | O(1) | ์ธ๋ฑ์ค๋ก ๊ฐ ์ฐพ๊ธฐ |
2 | Store | l[i] = val | O(1) | ์ธ๋ฑ์ค๋ก ๋ฐ์ดํฐ ์ ์ฅ |
3 | Length | len(l) | O(1) | ๋ฆฌ์คํธ ๊ธธ์ด |
4 | Append | l.append(val) | O(1) | ๋ฆฌ์คํธ ๋ค์ ๋ฐ์ดํฐ ์ถ๊ฐ |
5 | Pop | l.pop() | O(1) | ๋ฆฌ์คํธ ๋ง์ง๋ง ๋ฐ์ดํฐ pop |
6 | Clear | l.clear() | O(1) | ๋น ๋ฆฌ์คํธ๋ก ๋ง๋ฆ |
7 | Slice | l[a:b] | O(b-a) | ์ฌ๋ผ์ด์ฑ |
8 | Extend | l.extend(l2) | O(len(l2)) | ๋ฆฌ์คํธ ํ์ฅ |
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) | x๊ฐ ํฌํจ ์ฌ๋ถ ํ์ธ |
14 | Copy | l.copy() | O(N) | ๋ฆฌ์คํธ ๋ณต์ |
15 | Remove | l.remove(val) | O(N) | ๋ฆฌ์คํธ์์ val๊ฐ ์ ๊ฑฐ |
16 | Pop 2 | l.pop(i) | O(N) | i๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ pop |
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 | Big-O | Notes | |
1 | Add | s.add(val) | O(1) | ์งํฉ ์์ ์ถ๊ฐ |
2 | Containment | x in/not in s | O(1) | ํฌํจ ์ฌ๋ถ ํ์ธ |
3 | Remove | s.remove(val) | O(1) | ์์ ์ ๊ฑฐ(์์ผ๋ฉด ์๋ฌ) |
4 | Discard | s.discard(val) | O(1) | ์์ ์ ๊ฑฐ(์์ด๋ ์๋ฌx) |
5 | Pop | s.pop() | O(1) | ๋๋คํ๊ฒ ํ๋ pop |
6 | Clear | s.clear() | O(1) | ๋น ์งํฉ์ผ๋ก ๋ง๋ฆ |
7 | Construction | set(…) | O(len(…)) | ๊ธธ์ด๋งํผ |
8 | check ==, != | s != t | O(len(s)) | ์ ์ฒด ์์ ๋์ผ ์ฌ๋ถ ํ์ธ |
9 | <= or < | s <= t | O(len(s)) | ๋ถ๋ถ์งํฉ ์ฌ๋ถ |
10 | Union | s, t | O(len(s)+len(t)) | ํฉ์งํฉ |
11 | Intersection | s & t | O(len(s)+len(t)) | ๊ต์งํฉ |
12 | Difference | s - t | O(len(s)+len(t)) | ์ฐจ์งํฉ |
13 | Symmetric Diff | s ^ t | O(len(s)+len(t)) | ์ฌ์งํฉ |
14 | Iteration | for v in s: | O(N) | ์ ์ฒด ์์ ์ํ |
15 | Copy | s.copy() | O(N) | ๋ณต์ |
๋์ ๋๋ฆฌ(Dictionary)
Operation | Example | Big-O | Notes | |
1 | Store | d[k] = v | O(1) | ์งํฉ ์์ ์ถ๊ฐ |
2 | Length | len(d) | O(1) | ๋์ ๋๋ฆฌ ๊ธธ์ด |
3 | Delete | del d[k] | O(1) | ํด๋น key ์ ๊ฑฐ |
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) | ๋๋ค ๋ฐ์ดํฐ(key:value) pop |
7 | Clear | d.clear() | O(1) | ๋น ๋์ ๋๋ฆฌ๋ก ๋ง๋ฆ |
8 | View | d.keys() | O(1) | key ์ ์ฒด ํ์ธ |
9 | Values | d.values() | O(1) | value ์ ์ฒด ํ์ธ |
10 | Construction | dict(…) | O(len(…)) | (key, value) tuple ๊ฐฏ์๋งํผ |
11 | Iteration | for k in d: | O(N) | ๋์ ๋๋ฆฌ ์ ์ฒด ์ํ |
๋ฑํฌ(collections.deque)
Operation | Example | Big-O | Notes | |
1 | Copy | dq.copy() | O(N) | ๋ณต์ |
2 | Append | dq.append(val) | O(1) | ์์ ์ถ๊ฐ (ํ์ ์ค๋ฅธ์ชฝ) |
3 | Append Left | dq.appendleft(val) | O(1) | ์์ ์ถ๊ฐ (ํ์ ์ผ์ชฝ) |
4 | Pop | dq.pop() | O(1) | ๋ง์ง๋ง ๋ฐ์ดํฐ pop |
5 | Pop Left | dq.popleft() | O(1) | ์ฒซ๋ฒ์งธ ๋ฐ์ดํฐ pop |
6 | Extend | dq.extend(dq2) | O(k) | dq + dq2 ํ์ฅ |
7 | Extend Left | dq.extendleft(dq2) | O(len(dq2)) | dq2 + dq ํ์ฅ |
8 | Rotate | dq.rotate(k) | O(k) | ์์k: ์ค๋ฅธ์ชฝ์ผ๋ก n๋งํผ ํ์ , ์์k: ์ผ์ชฝ์ผ๋ก n๋งํผ ํ์ |
9 | Remove | dq.remove(val) | O(N) | ์์ ์ ๊ฑฐ |
์ฐ์ ์์ํ(heapq)
Operation | Example | Big-O | Notes | |
1 | Heappush | heappush(h, 1) | O(logN) | ํ์ ์์ ์ถ๊ฐ |
2 | Heappop | heappop(h) | O(logN) | ๊ฐ์ฅ ์์ ์์ pop |
3 | Heapify | heapify(h) | O(N) | ๋ฆฌ์คํธ๋ฅผ ํ์ผ๋ก ๋ณํ |
์ด์งํ์(bisect)
Operation | Example | Big-O | Notes | |
1 | Bisect Left | bisect_left(data, x) | O(logN) | data์ x๊ฐ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ฅ ์์ ์ธ๋ฑ์ค |
2 | Bisect Right | bisect_right(data, x) | O(logN) | data์ x๊ฐ ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ฅ ํฐ ์ธ๋ฑ์ค |
728x90