ํฌ์ŠคํŠธ

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)๋ฅผ ํ™œ์šฉํ•œ ๋ฐฉ์‹์ด ๋Œ€ํ‘œ์ ์ด๋‹ค.
  • ๊ฒฐ๊ณผ๊ฐ€ ์œ ์ผํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. (์กฐ๊ฑด ๋งŒ์กฑ ์‹œ ์—ฌ๋Ÿฌ ๋‹ต ์กด์žฌ ๊ฐ€๋Šฅ)

โš™๏ธ ๋™์ž‘ ์›๋ฆฌ

  1. ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ง„์ž…์ฐจ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
  2. ์ง„์ž…์ฐจ์ˆ˜๊ฐ€ 0์ธ ๋…ธ๋“œ๋ฅผ ํ(queue)์— ๋„ฃ๋Š”๋‹ค.
  3. ํ์—์„œ ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋นผ๋ฉด์„œ, ๊ทธ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ์„ ์ œ๊ฑฐํ•œ๋‹ค. ๊ฐ„์„ ์ด ์ œ๊ฑฐ๋œ ๋…ธ๋“œ์˜ ์ง„์ž…์ฐจ์ˆ˜๊ฐ€ 0์ด ๋˜๋ฉด ํ์— ๋„ฃ๋Š”๋‹ค.
  4. ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

โณ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๊ฐ„์„  ์ˆ˜ ( E ), ์ •์  ์ˆ˜ ( V )์ผ ๋•Œ: [ O(V + E) ]

โ‘ก ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskal Algorithm)

๐Ÿ“– ์ •์˜

์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST, Minimum Spanning Tree)๋ฅผ ์ฐพ๋Š” ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
MST๋ž€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜ ํ•ฉ์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ๋‹ค.

  • ๊ทธ๋ฆฌ๋””(Greedy) ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

โš™๏ธ ๋™์ž‘ ์›๋ฆฌ

  1. ๊ฐ„์„ ์„ ๊ฐ€์ค‘์น˜ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.
  2. ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์„ ํƒํ•œ๋‹ค.
    • ์ด๋•Œ, ์„ ํƒํ•œ ๊ฐ„์„ ์ด ์‚ฌ์ดํด์„ ํ˜•์„ฑํ•˜๋ฉด ์„ ํƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  3. ์„ ํƒ๋œ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋…ธ๋“œ ์ˆ˜ - 1์ด๋ฉด ์ข…๋ฃŒ๋œ๋‹ค.

โœจ ์‚ฌ์ดํด ํŒ๋ณ„ ๋ฐฉ๋ฒ•

  • Union-Find ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ

โณ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๊ฐ„์„  ์ˆ˜ ( E ), ์ •์  ์ˆ˜ ( V )์ผ ๋•Œ: [ O(E\log E) \quad (\because\text{์ •๋ ฌ ์‹œ๊ฐ„}) ]

โ‘ข ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Prim Algorithm)

๐Ÿ“– ์ •์˜

ํฌ๋ฃจ์Šค์นผ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST)๋ฅผ ์ฐพ๋Š” ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
ํฌ๋ฃจ์Šค์นผ์ด ๊ฐ„์„  ์ค‘์‹ฌ์ด๋ผ๋ฉด, ํ”„๋ฆผ์€ ๋…ธ๋“œ ์ค‘์‹ฌ์œผ๋กœ ํ™•์žฅ๋œ๋‹ค.

โš™๏ธ ๋™์ž‘ ์›๋ฆฌ

  1. ์ž„์˜์˜ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ด ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•œ ์ง‘ํ•ฉ์„ ๋งŒ๋“ ๋‹ค.
  2. ํ˜„์žฌ ์ง‘ํ•ฉ์—์„œ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•œ ๊ฐ„์„  ์ค‘ ๊ฐ€์žฅ ๊ฐ€์ค‘์น˜๊ฐ€ ๋‚ฎ์€ ๊ฐ„์„ ์„ ๊ณจ๋ผ ์—ฐ๊ฒฐํ•œ๋‹ค.
    • ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋ฅผ ์ง‘ํ•ฉ์— ํฌํ•จํ•œ๋‹ค.
  3. ์ง‘ํ•ฉ์— ํฌํ•จ๋œ ๋…ธ๋“œ๊ฐ€ ์ „์ฒด ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

๐Ÿ—’๏ธ ๊ตฌํ˜„ ์‹œ ์œ ์˜์‚ฌํ•ญ

  • ์šฐ์„ ์ˆœ์œ„ ํ(ํž™)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๋ฒˆ ์ตœ์ ์˜ ๊ฐ„์„ ์„ ํšจ์œจ์ ์œผ๋กœ ์„ ํƒํ•œ๋‹ค.

โณ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๊ฐ„์„  ์ˆ˜ ( 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
  1. ์ง„์ž…์ฐจ์ˆ˜:
    • A(0), B(1), C(1), D(1), E(2)
  2. ์ง„์ž…์ฐจ์ˆ˜ 0์ธ A ํ์— ์ถ”๊ฐ€ โ†’ A ์„ ํƒ ํ›„ B,C ์ง„์ž…์ฐจ์ˆ˜ ๊ฐ์†Œ
  3. 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)}
  1. ์ •๋ ฌ ํ›„: A-B(1), B-C(1), C-D(1), A-C(3), B-D(4)
  2. A-B ์„ ํƒ, B-C ์„ ํƒ, C-D ์„ ํƒ
    (์‚ฌ์ดํด ์—†์œผ๋ฏ€๋กœ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ ์™„์„ฑ)
  • ์ด ๊ฐ€์ค‘์น˜: (1+1+1=3)

โœ… ํ”„๋ฆผ ์˜ˆ์‹œ (MST)

๊ฐ™์€ ๊ทธ๋ž˜ํ”„์—์„œ ์‹œ์ž‘๋…ธ๋“œ A๋ผ๊ณ  ํ•˜๋ฉด:

  1. A์—์„œ ์ตœ์†Œ ๊ฐ„์„  A-B(1) ์„ ํƒ โ†’ ๋…ธ๋“œ ์ง‘ํ•ฉ {A,B}
  2. ์ง‘ํ•ฉ {A,B}์—์„œ ์ตœ์†Œ ๊ฐ„์„  B-C(1) ์„ ํƒ โ†’ ์ง‘ํ•ฉ {A,B,C}
  3. ์ง‘ํ•ฉ {A,B,C}์—์„œ ์ตœ์†Œ ๊ฐ„์„  C-D(1) ์„ ํƒ โ†’ ์ง‘ํ•ฉ {A,B,C,D}
  • ์ด ๊ฐ€์ค‘์น˜: ์—ญ์‹œ (1+1+1=3)
์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.