Summary
๐ ์๊ณ ๋ฆฌ์ฆ ํต์ฌ ๊ฐ๋ ์ ๋ฆฌ
์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ ์ ํต์ฌ์ด ๋๋ 5๊ฐ์ง ๋ถ์ผ๋ฅผ ๋ช ํํ ์ ๋ฆฌํ์ต๋๋ค.
๐ 1. ํ์๊ณผ ์ ๋ ฌ (Searching & Sorting)
์๊ณ ๋ฆฌ์ฆ | ์๊ฐ๋ณต์ก๋ | ๋น๊ณ |
---|---|---|
์ ํ ํ์ | $O(n)$ | ย |
์ด์ง ํ์ | $O(\log n)$ | ์ ๋ ฌ๋ ์๋ฃ์์ ํ์ |
๋ฒ๋ธ ์ ๋ ฌ | $O(n^2)$ | ์ธ์ ํ ๋ ์์ ๋น๊ต |
์ ํ ์ ๋ ฌ | $O(n^2)$ | ์ต์๊ฐ ์ ํ ํ ๊ตํ |
์ฝ์ ์ ๋ ฌ | $O(n^2)$ | ์ ๋ ฌ๋ ๋ถ๋ถ์ ์ฝ์ |
ํฉ๋ณ ์ ๋ ฌ | $O(n\log n)$ | ๋ถํ ํ ๋ณํฉ |
ํต ์ ๋ ฌ | ํ๊ท $O(n\log n)$, ์ต์ $O(n^2)$ | ํผ๋ฒ ๊ธฐ์ค ๋ถํ |
๐ 2. ๊ทธ๋ฆฌ๋(Greedy) ์๊ณ ๋ฆฌ์ฆ
ํ์ฌ ๋จ๊ณ์ ์ต์ ํด๋ฅผ ์ ํํ์ฌ ์ ์ฒด ๋ฌธ์ ์ ์ต์ ํด๋ฅผ ๊ตฌํจ
- ์์: ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ , ์ต์ ์ ์ฅ ํธ๋ฆฌ(Kruskal, Prim)
๐ 3. ๋ถํ ์ ๋ณต(Divide and Conquer)
ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๊ณ ๋ณํฉ
- ์์: ํฉ๋ณ ์ ๋ ฌ, ํต ์ ๋ ฌ, ๊ฑฐ๋ญ์ ๊ณฑ ๊ณ์ฐ
๐ 4. ๋์ ํ๋ก๊ทธ๋๋ฐ(Dynamic Programming)
์ต์ ๋ถ๋ถ ๊ตฌ์กฐ์ ์ค๋ณต๋ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ ์ ํ์ฉํด ํด๊ฒฐ
- ์์: ํผ๋ณด๋์น ์์ด, ๋ฐฐ๋ญ ๋ฌธ์ , ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด(LCS)
๐ 5. ๊ทธ๋ํ(Graph) ์๊ณ ๋ฆฌ์ฆ
โ ์์ ์ ๋ ฌ(Topological Sort)
- ๋ฐฉํฅ์ฑ ๋น์ํ ๊ทธ๋ํ(DAG)์์ ์์๋ฅผ ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ
- BFS ํน์ DFS ์ด์ฉํด ๊ตฌํ
- ์ฃผ๋ก ์์ ์ค์ผ์ค๋ง ๋ฌธ์ ์์ ์ฌ์ฉ
โ ์ต์ ์ ์ฅ ํธ๋ฆฌ(MST)
๋ชจ๋ ๋ ธ๋๋ฅผ ์ต์ ๋น์ฉ์ผ๋ก ์ฐ๊ฒฐํ๋ ํธ๋ฆฌ
๐น ํฌ๋ฃจ์ค์นผ(Kruskal) ์๊ณ ๋ฆฌ์ฆ
- ๋ชจ๋ ๊ฐ์ ์ ๊ฐ์ค์น ์์ผ๋ก ์ ๋ ฌ
- ์ฌ์ดํด์ด ํ์ฑ๋์ง ์๋ ๊ฐ์ฅ ์์ ๊ฐ์ ์ ์ ํ
- Union-Find ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉ
- ์๊ฐ๋ณต์ก๋: $O(E\log E)$
๐น ํ๋ฆผ(Prim) ์๊ณ ๋ฆฌ์ฆ
- ํ๋์ ๋ ธ๋์์ ์์ํด ๊ฐ์ฅ ๋ฎ์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง ์ฐ๊ฒฐ ๋ ธ๋๋ฅผ ์ ํํ๋ฉฐ ํ์ฅ
- ์ฐ์ ์์ ํ(ํ)๋ฅผ ์ฌ์ฉํ์ฌ ํจ์จ์ ๊ตฌํ
- ์๊ฐ๋ณต์ก๋: $O(E\log V)$
โ ์ต๋จ ๊ฒฝ๋ก(Shortest Path)
๐น ๋ค์ต์คํธ๋ผ(Dijkstra)
- ์์ ๊ฐ์ค์น ์๋ ๊ทธ๋ํ์์ ์ต๋จ ๊ฒฝ๋ก
- ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด ํ์
- ์๊ฐ๋ณต์ก๋: $O(E\log V)$
๐น ๋ฒจ๋ง-ํฌ๋(Bellman-Ford)
- ์์ ๊ฐ์ค์น๋ฅผ ํฌํจํ ๊ทธ๋ํ์์ ์ต๋จ ๊ฒฝ๋ก ํ์ ๊ฐ๋ฅ
- ๋ชจ๋ ๊ฐ์ ์ V-1๋ฒ ์ํ(relaxation)
- ์์ ์ฌ์ดํด ๊ฐ์ง ๊ฐ๋ฅ
- ์๊ฐ๋ณต์ก๋: $O(VE)$
๐น ํ๋ก์ด๋-์์ (Floyd-Warshall)
- ๋ชจ๋ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊น์ง ์ต๋จ ๊ฒฝ๋ก ํ์
- DP๋ฅผ ์ด์ฉํ ์ ํ์: \(D_{ij}^{(k)} = \min(D_{ij}^{(k-1)}, D_{ik}^{(k-1)} + D_{kj}^{(k-1)})\)
- ์๊ฐ๋ณต์ก๋: $O(V^3)$
๐ ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ(์ฌํ ์ ๋ฆฌ)
๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ํ๋ผ๋ ์๋ฃ๊ตฌ์กฐ(๋ ธ๋์ ๊ฐ์ ์ผ๋ก ๊ตฌ์ฑ๋)๋ฅผ ํ์ฉํ์ฌ ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์ฌ๊ธฐ์ ํนํ ์ค์ํ ์๊ณ ๋ฆฌ์ฆ๋ค์ธ ์์ ์ ๋ ฌ, ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ, ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ์ ์ค์ ์ผ๋ก ์ดํด๋ณผ๊ฒ.
โ ์์ ์ ๋ ฌ(Topological Sort)
๐ ์ ์
๋ฐฉํฅ์ฑ ๋น์ํ ๊ทธ๋ํ(DAG, Directed Acyclic Graph)์์ ์ ์ ๋ค์ ์์๋๋ก ๋์ดํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์ฃผ๋ก ์์
์ ์ ํ ๊ด๊ณ๋ฅผ ๊ฒฐ์ ํ ๋ ์ฌ์ฉ๋๋ค.
- ์ง์ ์ฐจ์(Indegree)๋ฅผ ํ์ฉํ ๋ฐฉ์์ด ๋ํ์ ์ด๋ค.
- ๊ฒฐ๊ณผ๊ฐ ์ ์ผํ์ง ์์ ์ ์๋ค. (์กฐ๊ฑด ๋ง์กฑ ์ ์ฌ๋ฌ ๋ต ์กด์ฌ ๊ฐ๋ฅ)
โ๏ธ ๋์ ์๋ฆฌ
- ๋ชจ๋ ๋ ธ๋์ ์ง์ ์ฐจ์๋ฅผ ๊ณ์ฐํ๋ค.
- ์ง์ ์ฐจ์๊ฐ 0์ธ ๋ ธ๋๋ฅผ ํ(queue)์ ๋ฃ๋๋ค.
- ํ์์ ๋ ธ๋๋ฅผ ํ๋์ฉ ๋นผ๋ฉด์, ๊ทธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๊ฐ์ ์ ์ ๊ฑฐํ๋ค. ๊ฐ์ ์ด ์ ๊ฑฐ๋ ๋ ธ๋์ ์ง์ ์ฐจ์๊ฐ 0์ด ๋๋ฉด ํ์ ๋ฃ๋๋ค.
- ํ๊ฐ ๋น ๋๊น์ง ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
โณ ์๊ฐ ๋ณต์ก๋
- ๊ฐ์ ์ ( E ), ์ ์ ์ ( V )์ผ ๋: [ O(V + E) ]
โก ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ(Kruskal Algorithm)
๐ ์ ์
์ต์ ์ ์ฅ ํธ๋ฆฌ(MST, Minimum Spanning Tree)๋ฅผ ์ฐพ๋ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
MST๋ ๋ชจ๋ ๋
ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ฉด์ ๊ฐ์ฅ ๋ฎ์ ๊ฐ์ค์น ํฉ์ ๊ฐ์ง๋ ํธ๋ฆฌ๋ค.
- ๊ทธ๋ฆฌ๋(Greedy) ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
โ๏ธ ๋์ ์๋ฆฌ
- ๊ฐ์ ์ ๊ฐ์ค์น ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- ๊ฐ์ค์น๊ฐ ๊ฐ์ฅ ๋ฎ์ ๊ฐ์ ๋ถํฐ ์์๋๋ก ์ ํํ๋ค.
- ์ด๋, ์ ํํ ๊ฐ์ ์ด ์ฌ์ดํด์ ํ์ฑํ๋ฉด ์ ํํ์ง ์๋๋ค.
- ์ ํ๋ ๊ฐ์ ์ ๊ฐ์๊ฐ ๋ ธ๋ ์ - 1์ด๋ฉด ์ข ๋ฃ๋๋ค.
โจ ์ฌ์ดํด ํ๋ณ ๋ฐฉ๋ฒ
- Union-Find ์๋ฃ๊ตฌ์กฐ ํ์ฉ
โณ ์๊ฐ ๋ณต์ก๋
- ๊ฐ์ ์ ( E ), ์ ์ ์ ( V )์ผ ๋: [ O(E\log E) \quad (\because\text{์ ๋ ฌ ์๊ฐ}) ]
โข ํ๋ฆผ ์๊ณ ๋ฆฌ์ฆ(Prim Algorithm)
๐ ์ ์
ํฌ๋ฃจ์ค์นผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ต์ ์ ์ฅ ํธ๋ฆฌ(MST)๋ฅผ ์ฐพ๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
ํฌ๋ฃจ์ค์นผ์ด ๊ฐ์ ์ค์ฌ์ด๋ผ๋ฉด, ํ๋ฆผ์ ๋
ธ๋ ์ค์ฌ์ผ๋ก ํ์ฅ๋๋ค.
โ๏ธ ๋์ ์๋ฆฌ
- ์์์ ๋ ธ๋์์ ์์ํ์ฌ ์ด ๋ ธ๋๋ฅผ ํฌํจํ ์งํฉ์ ๋ง๋ ๋ค.
- ํ์ฌ ์งํฉ์์ ์ฐ๊ฒฐ ๊ฐ๋ฅํ ๊ฐ์ ์ค ๊ฐ์ฅ ๊ฐ์ค์น๊ฐ ๋ฎ์ ๊ฐ์ ์ ๊ณจ๋ผ ์ฐ๊ฒฐํ๋ค.
- ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ์งํฉ์ ํฌํจํ๋ค.
- ์งํฉ์ ํฌํจ๋ ๋ ธ๋๊ฐ ์ ์ฒด ๋ ธ๋๋ฅผ ํฌํจํ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
๐๏ธ ๊ตฌํ ์ ์ ์์ฌํญ
- ์ฐ์ ์์ ํ(ํ)์ ์ฌ์ฉํ์ฌ ๋งค๋ฒ ์ต์ ์ ๊ฐ์ ์ ํจ์จ์ ์ผ๋ก ์ ํํ๋ค.
โณ ์๊ฐ ๋ณต์ก๋
- ๊ฐ์ ์ ( E ), ์ ์ ์ ( V )์ผ ๋:
- ๋จ์ ๊ตฌํ: ( O(V^2) )
- ํ ์ฌ์ฉ ์ต์ ํ: ( O(E\log V) )
๐ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์์ฝ ๋น๊ต
์๊ณ ๋ฆฌ์ฆ | ๋ฐฉ์ | ์ฃผ ์ฉ๋ | ์๊ฐ ๋ณต์ก๋ |
---|---|---|---|
์์ ์ ๋ ฌ | DAG์์ ์์ ์ฐพ๊ธฐ | ์์ ์ค์ผ์ค๋ง | ( O(V + E) ) |
ํฌ๋ฃจ์ค์นผ | ๊ฐ์ค์น ๋ฎ์ ๊ฐ์ ์ ํ(Union-Find ํ์ฉ) | MST ๊ตฌ์ฑ | ( O(E\log E) ) |
ํ๋ฆผ | ๋ ธ๋ ๊ธฐ์ค ํ์ฅ(์ฐ์ ์์ ํ ํ์ฉ) | MST ๊ตฌ์ฑ | ( O(E\log V) ) |
๐ ์ค์ ๋์ ์์
โ ์์์ ๋ ฌ ์์
๋ค์ ๊ทธ๋ํ๋ฅผ ์์๋ก ํ์.
1
2
3
A โ B โ D
โ โ๏ธ
C โ E
- ์ง์
์ฐจ์:
- A(0), B(1), C(1), D(1), E(2)
- ์ง์ ์ฐจ์ 0์ธ A ํ์ ์ถ๊ฐ โ A ์ ํ ํ B,C ์ง์ ์ฐจ์ ๊ฐ์
- B, C ์ง์ ์ฐจ์ 0์ด๋ฏ๋ก ํ์ ์ถ๊ฐ โ ์ ํ ๋ฐ๋ณต (์: AโBโCโDโE ์์)
โ ํฌ๋ฃจ์ค์นผ ์์ (MST)
1
๊ฐ์ : {A-B(1), A-C(3), B-C(1), B-D(4), C-D(1)}
- ์ ๋ ฌ ํ: A-B(1), B-C(1), C-D(1), A-C(3), B-D(4)
- A-B ์ ํ, B-C ์ ํ, C-D ์ ํ
(์ฌ์ดํด ์์ผ๋ฏ๋ก ์ต์ ์ ์ฅ ํธ๋ฆฌ ์์ฑ)
- ์ด ๊ฐ์ค์น: (1+1+1=3)
โ ํ๋ฆผ ์์ (MST)
๊ฐ์ ๊ทธ๋ํ์์ ์์๋ ธ๋ A๋ผ๊ณ ํ๋ฉด:
- A์์ ์ต์ ๊ฐ์ A-B(1) ์ ํ โ ๋ ธ๋ ์งํฉ {A,B}
- ์งํฉ {A,B}์์ ์ต์ ๊ฐ์ B-C(1) ์ ํ โ ์งํฉ {A,B,C}
- ์งํฉ {A,B,C}์์ ์ต์ ๊ฐ์ C-D(1) ์ ํ โ ์งํฉ {A,B,C,D}
- ์ด ๊ฐ์ค์น: ์ญ์ (1+1+1=3)