๐Ÿ“Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜(๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ๊ณ ๊ธ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊นŒ์ง€)

Jinil Parkยท2025๋…„ 4์›” 19์ผ
0

Computer Science

๋ชฉ๋ก ๋ณด๊ธฐ
2/5

๐Ÿ”– ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช…ํ™•ํ•œ ๋‹จ๊ณ„๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‰๊ฐ€ํ•  ๋•Œ ์‹œ๊ฐ„ ๋ณต์žก๋„(Time Complexity)์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„(Space Complexity)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์‹œ๊ฐ„ ๋ณต์žก๋„: ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ Big-O ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณต๊ฐ„ ๋ณต์žก๋„: ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

1๏ธโƒฃ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Search Algorithm)

์ฃผ์š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์„ ํ˜• ํƒ์ƒ‰(Linear Search): ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
  • ์ด์ง„ ํƒ์ƒ‰(Binary Search): ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ค‘๊ฐ„ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ขํ˜€๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(log n)

์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰
  • ํŠน์ • ๊ฐ’ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ

2๏ธโƒฃ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Sort Algorithm)

์ฃผ์š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort): ์ธ์ ‘ํ•œ ๋‘ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ฉฐ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(nยฒ)
  • ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort): ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋ฉฐ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: ํ‰๊ท  O(nยฒ), ์ตœ์„  O(n)
  • ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort): ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ„๊ณ  ์ •๋ ฌํ•œ ๋’ค ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n log n)
  • ํ€ต ์ •๋ ฌ(Quick Sort): Pivot์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ„์–ด ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: ํ‰๊ท  O(n log n), ์ตœ์•… O(nยฒ)

์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ๋ถ„์„
  • ๊ฒ€์ƒ‰ ํšจ์œจ ๊ฐœ์„ ์„ ์œ„ํ•œ ์‚ฌ์ „ ์ •๋ ฌ

3๏ธโƒฃ ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Recursive Algorithm)

์žฌ๊ท€๋ž€?

  • ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ๋ถ„ํ•  ์ •๋ณต(Divide and Conquer) ์ „๋žต์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์˜ˆ์‹œ

  • ํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐ
  • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด
  • ํ•˜๋…ธ์ด์˜ ํƒ‘(Tower of Hanoi)

์žฅ๋‹จ์ 

  • ์žฅ์ : ์ฝ”๋“œ๊ฐ€ ์ง๊ด€์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ : ํ˜ธ์ถœ ์Šคํƒ ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ธํ•ด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ๊ฐ€ ํด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4๏ธโƒฃ ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming, DP)

DP๋ž€?

  • ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ์ค‘๋ณต ๊ณ„์‚ฐ์„ ํ”ผํ•จ์œผ๋กœ์จ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์˜ˆ์‹œ

  • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ ํšจ์œจ์  ๊ณ„์‚ฐ
  • ๋ฐฐ๋‚ญ ๋ฌธ์ œ(Knapsack Problem)
  • ์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด(LCS)

ํ•ต์‹ฌ ์•„์ด๋””์–ด

  • ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization): ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ค‘๋ณต ๊ณ„์‚ฐ ๋ฐฉ์ง€
  • ์ƒํ–ฅ์‹ ์ ‘๊ทผ๋ฒ•(Bottom-Up Approach)

5๏ธโƒฃ ๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Graph Algorithm)

๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

  • ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์†์„ฑ์„ ๋ถ„์„ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS): ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(V+E)
  • ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS): ๊นŠ์ด ๋“ค์–ด๊ฐ€๋ฉฐ ํƒ์ƒ‰ ํ›„ ๋˜๋Œ์•„์˜ต๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(V+E)
  • ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Dijkstra's Algorithm): ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O((V+E)logV)
  • ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Floyd-Warshall Algorithm): ๋ชจ๋“  ์Œ์˜ ์ •์  ๊ฐ„ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(Vยณ)

์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ ์ฐพ๊ธฐ
  • GPS ๊ธธ ์ฐพ๊ธฐ ์‹œ์Šคํ…œ

6๏ธโƒฃ ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)

ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

  • ๋งค ์ˆœ๊ฐ„ ์ตœ์ ์˜ ์„ ํƒ์„ ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.
  • ํ•ญ์ƒ ์ตœ์ ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์˜ˆ์‹œ

  • ๋™์ „ ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ
  • ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST) - ํฌ๋ฃจ์Šค์นผ(Kruskal), ํ”„๋ฆผ(Prim) ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํŠน์ง•

  • ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„ ๋ฐ ๋น ๋ฅธ ์†๋„
  • ์ตœ์ ์˜ ํ•ด๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฌธ์ œ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)

7๏ธโƒฃ ๋ฐฑํŠธ๋ž˜ํ‚น(Backtracking)

๋ฐฑํŠธ๋ž˜ํ‚น์ด๋ž€?

  • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‹ค์‹œ ์ด์ „ ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ€ ๋‹ค๋ฅธ ๊ฐ€๋Šฅ์„ฑ์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์˜ˆ์‹œ

  • N-Queen ๋ฌธ์ œ
  • ์Šค๋„์ฟ  ํผ์ฆ
  • ๋ฏธ๋กœ ์ฐพ๊ธฐ ๋ฌธ์ œ

ํŠน์ง•

  • ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ์™„์ „ ํƒ์ƒ‰(Brute Force)์˜ ์ผ์ข…์ž…๋‹ˆ๋‹ค.

โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•™์Šต์˜ ์ค‘์š”์„ฑ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•™์Šตํ•˜๋ฉด ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์ƒ๊น๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ์™€ ํ•จ๊ป˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค๋ ฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ์ €์žฅ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ๋” ๊นŠ์ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!


๐Ÿ“– ๋ณธ ๊ธ€์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๋ถ„๋“ค์ด ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์žฅ์—์„œ ์ด์–ด๊ฐ‘๋‹ˆ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€