๐Ÿ”ฅ Algorithm

ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค    TSP ๋ฌธ์ œ : ์™„์ „๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ€์žฅ ์งง์€ ํ•ด๋ฐ€ํ† ๋‹ˆ์•ˆ ์‚ฌ์ดํด ์ฐพ๊ธฐ  ๋น„๋Œ€์นญ TSP ๋ฌธ์ œ : ๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” TSP ๋ฌธ์ œ=> ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„์ธ๋ฐ ๊ฐ€๋Š” ๋ฐฉํ–ฅ, ์˜ค๋Š” ๋ฐฉํ–ฅ์˜ weight๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” TSP ๋ฌธ์ œ State-Space Tree  ์ƒํƒœ ๊ณต๊ฐ„ ํŠธ๋ฆฌ : ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •์˜ ์ค‘๊ฐ„ ์ƒํƒœ๋ฅผ ๊ฐ๊ฐ ํ•œ ๋…ธ๋“œ๋กœ ๋‚˜ํƒ€๋‚ธ ํŠธ๋ฆฌ Backtracking ๋ฐฑํŠธ๋ž™ํ‚น : ์ƒํƒœ ๊ณต๊ฐ„ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ํ•ด๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•ด๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋˜๋Œ์•„๊ฐ„๋‹ค๋Š” ์˜๋ฏธ์—์„œ ์ง€์–ด์ง„ ์ด๋ฆ„๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‘์šฉ์ƒํƒœ ๊ณต๊ฐ„ ํŠธ๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋“ค์ง€๋Š” ์•Š์Œ  Backtracking vs..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  NP-Completeness ๊ฐœ์š”  P : ๋‹คํ•ญ์‹œ๊ฐ„์— ํ’€ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ์ • ๋ฌธ์ œ ์ง‘ํ•ฉ NP : ๋น„๊ฒฐ์ •๋ก ์ ์œผ๋กœ ๋‹คํ•ญ์‹œ๊ฐ„์— ํ’€ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ์ • ๋ฌธ์ œ ์ง‘ํ•ฉ => ๋‹ต์„ ๋‹คํ•ญ์‹œ๊ฐ„์— ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ(๋‹คํ•ญ์‹œ๊ฐ„์— ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์œผ๋ฉด NP ๋ฌธ์ œ) NP-Hard : ๋ชจ๋“  NP ๋ฌธ์ œ์—์„œ ๋‹คํ•ญ์‹œ๊ฐ„ ๋ณ€ํ™˜๋˜๋Š” ๋ฌธ์ œ ์ง‘ํ•ฉ => ๊ฒ€์ฆ์ด ์•ˆ๋  ์ˆ˜ ๋„ ์žˆ์Œ (NP - Complete์™€์˜ ์ฐจ์ด) NP-Complete : NP-Hard ์ด๋ฉด์„œ NP์ธ ๋ฌธ์ œ(๊ฒฐ๊ตญ NP์ด๊ธฐ์— yes/no์˜ ๊ฒฐ์ •๋ฌธ์ œ ์ง‘ํ•ฉ์ž„) NP-Hard ์ฆ๋ช… ๋ฐฉ๋ฒ• ๋ฌธ์ œ A๊ฐ€ NP-Hard ์ž„์„ ์ฆ๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ์Œ 1. NP-Hard ์ •์˜์— ๋”ฐ๋ผ ๋ชจ..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Motivation ์™ธํŒ์› ์ˆœํ™˜ ๋ฌธ์ œ (TSP : Travelling salesman problem)    ๋ชจ๋“  ์ •์ ์„ ๋ฐฉ๋ฌธํ•˜๊ณ  ์‹œ์ž‘ ์ •์ ์œผ๋กœ ๋Œ์•„์˜ค๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ธ๋ฐ Brute-force ๋ฐฉ์‹์œผ๋กœ n๊ฐœ์˜ ์ •์ ์˜ ๋ชจ๋“  permutation(์ˆœ์—ด)์„ ์กฐ์‚ฌํ•ด์•ผํ•จ => O(n!) TSP ๋ฌธ์ œ๋ฅผ ๋‹คํ•ญ์‹œ๊ฐ„์— ํ‘ธ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ• ๊นŒ? ์ด๋ก ์ƒ ๋ถˆ๊ฐ€๋Šฅํ•จ Types of Problems   Tractable Problem : ์ž…๋ ฅ n์— ๋Œ€ํ•˜์—ฌ ํ‘ธ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋‹คํ•ญ ํ•จ์ˆ˜ f(n) ์œผ๋กœ ํ‘œํ˜„ ๋˜๋Š” ๋ฌธ์ œ Intractable Problem: ๋‹คํ•ญ ์‹œ๊ฐ„์•ˆ์— ํ’€ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ=> Θ(2^n) ..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค   ์ด์ „ ํฌ์ŠคํŒ…์—์„œ String Match์— ๋Œ€ํ•ด O(n + m) = O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ค๋ค˜์—ˆ์Œ ์ด๋ฒˆ์—๋Š” ์ตœ์„ ์˜ ๊ฒฝ์šฐ O(n)๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ๋งค์นญํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ๋‹ค๋ฃฐ ์˜ˆ์ • String Match ๊ด€๋ จ ํฌ์ŠคํŒ… ์ฐธ๊ณ  https://hanjungyo.tistory.com/101 L14 - KMP Algorithm๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  String Matching ๋ฌธ์„œ์—์„œ ๋‹จ์–ด๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์œผ๋ ค๋ฉด?  ๋ฌธ์„œ์—์„œ ํŠนhanjungyo.tistory.com  Boyer..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  String Matching ๋ฌธ์„œ์—์„œ ๋‹จ์–ด๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์œผ๋ ค๋ฉด?  ๋ฌธ์„œ์—์„œ ํŠน์ • ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ์ฐพ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์„ํ…๋ฐ ์ด๋•Œ ์ฐพ์œผ๋ ค๋Š” ๋‹จ์–ด๋ฅผ pattern์ด๋ผ ํ•จ ์ด๋ ‡๊ฒŒ ๋ฌธ์„œ์—์„œ ๋‹จ์–ด๋ฅผ ์ฐพ์„ ๋•Œ ๋น ๋ฅด๊ฒŒ ์ฐพ์œผ๋ ค๋ฉด ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์จ์•ผํ• ์ง€์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž„ Problem Definition   ์ž…๋ ฅ์€ ๊ธธ์ด n์ธ ๋ฌธ์„œ ๋ฌธ์ž์—ด A, ๊ธธ์ด m์ธ ํŒจํ„ด ๋ฌธ์ž์—ด P ๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ๋ณดํ†ต n์ด m๋ณด๋‹ค ํ›จ์”ฌ ํฐ ์ƒํ™ฉ์ž„ ์ด๋•Œ ์ถœ๋ ฅ์€ ํŒจํ„ด ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋Š” A์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด(sub-string) ์œ„์น˜๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ๋จ Naive Algorithm ๋ฌธ์„œ A์˜ ๋ชจ๋“  ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํŒจํ„ด P์— ๋งค์น˜ํ•ด๋ณด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Topological Sorting ์œ„์ƒ์ •๋ ฌ์ด๋ž€ ์ž‘์—…๋“ค์˜ ์„ ํ›„ ๊ด€๊ณ„๋ฅผ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์„ ํ›„ ๊ด€๊ณ„๋ฅผ ์–ด๊ธฐ์ง€ ์•Š๋„๋ก ์ •์ ์„ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ž„ => ๋ชจ๋“  ๊ฐ„์„  (u, v)์— ๋Œ€ํ•ด ์ •์  u๊ฐ€ ์ •์  v๋ณด๋‹ค ์•ž์— ์œ„์น˜ํ•˜๋„๋ก ์ •๋ ฌ ๋Œ€์ƒ์ด directed graph๋กœ cycle์ด ์—†์–ด์•ผํ•จ!= DAG Kahn's Algorithm  ์•„์ด๋””์–ด๋Š” ์ง„์ž… ๊ฐ„์„ ์ด ์—†๋Š” ์ •์ ์„ ์•ž์— ๋‘๋Š” ๊ฒƒ์ž„   ์ˆœ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด 1. ์ง„์ž… ๊ฐ„์„ ์ด ์—†๋Š” ์ •์ ์„ ๊ณจ๋ผ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์Œ2. ๊ณ ๋ฅธ ์ •์ ์„ ์ œ๊ฑฐํ•˜๊ณ , ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ๋„ ์ œ๊ฑฐํ•จ๋ชจ๋“  ์ •์ ์ด ์ œ๊ฑฐ๋  ๋•Œ๊นŒ์ง€ ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณต Implementation Details pseudo co..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Shortest Paths   Shortest Paths๋ž€ ๋ง ๊ทธ๋Œ€๋กœ ๋‘ ์  ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ์ž„ => ๋‘ ์  ์‚ฌ์ด์˜ ๊ฒฝ๋กœ ์ค‘ ๋น„์šฉ์ด ์ตœ์†Œ์ธ ๊ฒฝ๋กœ(๊ฒฝ๋กœ ๋‚ด ๊ฐ„์„ ๋“ค์˜ ๋น„์šฉ ํ•ฉ) Single Source Shortest Paths ๊ทธ๋Ÿผ ์ด๋ฒˆ ํฌ์ŠคํŒ…์˜ ์ฃผ์ œ์ธ Single Source Shortest Paths๋Š” ๋ญ˜๊นŒ? ์ด๋Š” ํ•œ ์ ๊ณผ ๋‹ค๋ฅธ ๋ชจ๋“  ์  ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์˜๋ฏธํ•จ  => ์‹œ์ž‘ ์ •์  (source node) s์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ๊ฐ€ ๊ณง, s๊ฐ€ root์ธ shortest-path tree ์ฐพ๊ธฐ์ž„(์ผ์ข…์˜ spanning tree๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Œ) Dijkstra's Al..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Minimum Spanning Trees   Spanning Tree๋ž€ ๊ทธ๋ž˜ํ”„ G = (V, E)์—์„œ ๊ฐ„์„ ์„ |V| - 1 ๊ฐœ๋งŒ ๋‚จ๊ฒจ ํŠธ๋ฆฌ๊ฐ€ ๋˜๋„๋ก ๋งŒ๋“  ๊ฒƒ Minimm Spanning Tree๋ž€ Spanning Tree ์ค‘์—์„œ edge weight์˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ=> ํ•œ ๊ทธ๋ž˜ํ”„์— ์—ฌ๋Ÿฌ๊ฐœ์˜ MST๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ ์–ด๋–ป๊ฒŒ MST๋ฅผ ๊ตฌํ• ๊นŒ..? Naive Solution์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ชจ๋“  subgraph๋ฅผ ์‚ดํŽด๋ณด๊ณ , ๊ทธ ์ค‘์—์„œ spanning tree์ด๋ฉด์„œ weight์˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์ฐพ์œผ๋ฉด๋จ => subgraph์˜ ์ˆ˜๋Š” ๊ฐ๊ฐ์˜ edge๊ฐ€ ์žˆ๋ƒ ์—†๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋ฏ€๋กœ 2^|E..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Disjoint Sets Disjoint Sets๋ž€ ์„œ๋กœ ๊ฒน์น˜์ง€ ์•Š๋Š” ์ง‘ํ•ฉ๋“ค์„ ์˜๋ฏธํ•จ => ์–ด์ฉŒํ”ผ ๊ต์ง‘ํ•ฉ์ด ๊ณต์ง‘ํ•ฉ์ด๋ฏ€๋กœ intersect ์—ฐ์‚ฐ์€ ๋”ฐ๋กœ ์กด์žฌ X ∴ Disjoint Set ์—ฐ์‚ฐ์—๋Š”  make-set(u) : u๋ฅผ ์œ ์ผํ•œ ์›์†Œ๋กœ ๊ฐ–๋Š” ์ง‘ํ•ฉ ์ƒ์„ฑfind-set(u) : u๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ ๋ฆฌํ„ดunion(u, v) : u๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ๊ณผ v๊ฐ€ ์†ํ•œ ์ง‘ํ•ฉ์„ ํ•ฉ์นจ https://www.acmicpc.net/problem/1717 ์ง‘ํ•ฉ์˜ ํ‘œํ˜„ ์ด๋ผ๋Š” ๋ฐฑ์ค€ ๋ฌธ์ œ๋ฅผ Disjoint Set ์—ฐ์‚ฐ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž   python์˜ set์„ ์“ด๋‹ค๋ฉด union(u, v)๋ฅผ ํ•  ๋•Œ u, ..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค   Greedy Algorithm ๊ฐœ์š” Algorithmic Paradigms Brute-force methods=> ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด๊ธฐDivide and conquer=> ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐDynamic programming=> ์ž‘์€ ๋ฌธ์ œ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจํ•ด๋‘๊ณ  ์žฌํ™œ์šฉ์˜ค๋Š˜ ๋‹ค๋ฃฐ ์ฃผ์ œ๋Š” Greedy algorithms ์ž„!  Greedy Strategy ์ง€๊ธˆ ๋‹น์žฅ ๊ฐ€์žฅ ์ข‹์•„๋ณด์ด๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ์ „๋žต์ž„ => ๋ฏธ๋ž˜์˜ ์ƒํ™ฉ์€ ๊ณ ๋ คํ•˜์ง€ ์•Š์ŒGreedy Algorithm ์ด๋ž€  ์ตœ์ ํ•ด๋ฅผ ํ•ญ์ƒ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์Œํ˜„์žฌ์˜ ์„ ํƒ์ด ๋ฏธ๋ž˜์— ๋ฏธ์น  ์˜ํ–ฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—Loca..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค   Selection Problem Problem Definition (์ •๋ ฌ๋˜์ง€ ์•Š์€) ๋ฐฐ์—ด arr์—์„œ i ๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’ ์ฐพ๊ธฐInput : arr, i (0 (์—ฌ๊ธฐ์„œ i๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์ ์„ ์—ผ๋‘ํ•˜์ž)Output : arr์—์„œ i ๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” Methods ๋กœ๋Š” 1. ์ตœ์†Ÿ๊ฐ’ ์ฐพ๊ธฐ๋ฅผ ๋ฐ˜๋ณต=> ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„ Θ(i×n) = Θ(n^2)(์ตœ์•…์˜ ๊ฒฝ์šฐ i๊ฐ€ n-1 ์ด๋ฏ€๋กœ)2. ์ •๋ ฌ ํ›„ i ๋ฒˆ์งธ ๊ฐ’ ์ฐพ๊ธฐ => ์ •๋ ฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„ Θ(n logn)  Heapsort ์‚ฌ์šฉ์‹œ Θ(n + i logn)(build-heap์„ ํ•˜๊ณ  ๋ฝ‘๋Š”๋ฐ logn ๊ฑธ๋ฆฌ๋Š”๊ฒŒ i ๋ฒˆ ๋ฐ˜..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Lower Bounds of Comparision Sorting  ๋น„๊ต ๊ธฐ๋ฐ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Comparision sort) ์—์„œ Worst case์— O(nlogn) ๋ณด๋‹ค ๋น ๋ฅธ๊ฒŒ ์กด์žฌํ• ๊นŒ?  ์ •๋ ฌ ๋ฌธ์ œ์˜ ์ƒํ•œ์€ O(nlogn) ์ž„ => quicksort ๋ผ๋Š” O(nlogn) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ  ์ •๋ ฌ ๋ฌธ์ œ์˜ ํ•˜ํ•œ์€ Ω(n log n) ์ž„ => ๋ชจ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด Ω(n log n) ์ธ ๊ฒƒ์„ ์ฆ๋ช…ํ•ด์•ผํ•จ Comparison Sort๋ฅผ Decision Tree๋กœ ์ถ”์ƒํ™” ๊ฐ€๋Šฅํ•จ    ์œ„ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ ๋ชจ๋“  sort์˜ process๋ฅผ Decision Tree ํ˜•ํƒœ๋กœ ์ถ”์ƒํ™”๊ฐ€ ๊ฐ€๋Šฅํ•จ! => Tr..
JJunGyo
'๐Ÿ”ฅ Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก