๐Ÿ”ฅ Algorithm

ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค   Heapsort Heapsort๋Š” ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ Heap ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค! => Heap์ด๋ž€ Heap Property๋ฅผ ๋งŒ์กฑํ•˜๋Š” Complete Binary Tree์ž„! (Complete Binary Tree๋ž€ ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์‚ฝ์ž…ํ•˜๋Š” ํŠธ๋ฆฌ = ์™ผ์ชฝ์ด ๋น„์–ด์žˆ์„ ์ˆ˜ ์—†์Œ) Heap Property(Min-Heap์˜ ๊ฒฝ์šฐ) ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’ (Max-Heap์˜ ๊ฒฝ์šฐ) ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’ >= ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’    => Complete Binary Tree ์ด๋ฏ€๋กœ ์œ„์™€ ๊ฐ™์ด ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•จ!  Heap Operations์˜ ๊ฒฝ์šฐ (n์€ Heap์— ์ €์žฅ๋œ ..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Merge Sort ๋ถ„ํ•  ์ •๋ณต(Divide and Conquer) ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž„  => ์˜์—ญ์„ ๋‚˜๋ˆ ์„œ ๊ฐ๊ฐ ์ •๋ ฌํ•˜๊ณ  ํ•ฉ์น˜๋Š”๊ฒŒ Key Idea(๋‚˜๋‰œ ์˜์—ญ์„ ์žฌ๊ท€์ ์œผ๋กœ ์ •๋ ฌ)   Merging Two Sub-array   2๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๋‚˜๋ˆ ์ง„ ๋‘ ๋ฐฐ์—ด์„ ํ•˜๋‚˜๋กœ ํ•ฉ์นœ๋‹ค => ๋‘ Sub-array์˜ ์ตœ์†Ÿ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ  ๋” ์ž‘์€๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ์‹  ๊ฒฐ๊ตญ Merge๋Š” arr์— n๊ฐœ๋งŒํผ์„ ์ •๋ ฌํ•˜์—ฌ ๊ฐ’์„ ์ฑ„์šฐ๊ฒŒ๋จ=> Θ(n) ๋งŒํผ ์—ฐ์‚ฐ์„ ํ•„์š”๋กœ ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ Complexity Analysis of Merge Sort mergesort(arr, l, l..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค  Sorting? ์ •๋ ฌ(Sorting) : ๋ฐฐ์—ด ์›์†Œ๋“ค์„ ๋ฒˆํ˜ธ ์ˆœ, ์•ŒํŒŒ๋ฒณ ์ˆœ ๋“ฑ ์ •ํ•ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ๋ฌธ์ œ 3 / 1 / 2 / 5 / 4   ->  1 / 2 / 3 / 4 / 5  Sorting Algorithms์—๋Š” ํฌ๊ฒŒ ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ Θ(n^2)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“คSelection Sort, Insertion Sort, Bubble Sort๊ณ ๊ธ‰ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ Θ(nlogn)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“คMerge Sort, Quicksort, HeapsortํŠน์ˆ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ Θ(n)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“คRadix Sort, Counting S..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค   Complexity of Recursive Functions   Algorithm1 ์€ ํŒฉํ† ๋ฆฌ์–ผ์„ ์žฌ๊ท€์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๊ณ  Algorithm2 ๋Š” ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๋‹น ์ˆซ์ž๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ์Œ ๊ทธ๋Ÿผ ๋ณต์žก๋„๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ..? ๋ฐ”๋กœ ๋ณต์žก๋„๋ฅผ ๊ตฌํ•˜๊ธฐ๋Š” ํž˜๋“ค๊ณ  ์šฐ์„  ๋ณต์žก๋„ ํ•จ์ˆ˜์˜ ์ ํ™”์‹ (Recurrence Relation)์„ ๊ตฌํ•ด๋ณผ ์ˆ˜ ์žˆ์Œ  => ์ด๋Š” ๋ณต์žก๋„ ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ์ •์˜ํ•œ ์‹  Solving Recurrences ๋ณต์žก๋„๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ์€๋ฐ ์ ํ™”์‹์€ ๋˜ ์–ด๋–ป๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„๊นŒ..?  ์ ํ™”์‹์„ ํ‘ผ๋‹ค = ์ ํ™”์‹์„ ํ•ด์„์  ํ•ด๋กœ ๋ณ€ํ™˜ => ํ•ด์„์  ํ•ด(Closed solution) ๋ž€..
ยท๐Ÿ”ฅ Algorithm
๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ "์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜" ๊ต์žฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ•ํ•˜๋ช… ๊ต์ˆ˜๋‹˜์˜ ๊ฐ•์˜ ๊ต์•ˆ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜์—… ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค Algorithm Analysis ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์–ด๋–ค ๋ฌธ์ œ(Problem)๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ๋‚˜ ๋ฐฉ๋ฒ•์„ ๊ณต์‹ํ™”ํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ => ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋ž€ ์ž…๋ ฅ(Input)๊ณผ ์ถœ๋ ฅ(Output)์˜ ๊ด€๊ณ„ ์ •๋ ฌ ๋ฌธ์ œ๋ฅผ ์˜ˆ์‹œ๋กœ ๋ดค์„ ๋•ŒInput : ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ˆซ์ž๋“ค์˜ ๋ชฉ๋กOutput : ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ˆซ์ž๋“ค์˜ ๋ชฉ๋ก ํ•œ ๋ฌธ์ œ๋Š” ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ  Problem : n์„ n๋ฒˆ ๋”ํ•œ ๊ฐ’์€?   ๋ˆ„๊ฐ€๋ด๋„ 3๋ฒˆ์„ ์ฑ„ํƒํ• ํ…๋ฐ ๊ฐ€์žฅ ํšจ์œจ์ ์ด๊ณ  ์“ฐ๊ธฐ ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ด์•ผํ•˜๊ณ  ์ด๊ฒƒ์€ ๊ณง ํšจ์œจ์„ฑ๊ณผ ์šฉ์ด์„ฑ์ด ์ข‹๋‹ค๋Š” ์˜๋ฏธ (์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ํšจ์œจ์„ฑ์„ ์ฃผ๋กœ ์‹ ๊ฒฝ์”€) ๊ทธ๋Ÿผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์€ ์–ด๋–ป..
ยท๐Ÿ”ฅ Algorithm
Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ : ํŒŒ์ด์ฌ  ์‹œ๊ฐ„ ๋ณต์žก๋„์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๋งํ•จ ํŒŒ์ด์ฌ์—์„œ๋Š” 2000๋งŒ ๋ฒˆ~1์–ต ๋ฒˆ์˜ ์—ฐ์‚ฐ์„ 1์ดˆ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์œผ๋กœ ์˜ˆ์ธกํ‘œ๊ธฐ๋ฒ•์—๋Š”1. ๋น…-์˜ค๋ฉ”๊ฐ€ Ω(n) : ์ตœ์„ ์ผ ๋•Œ์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜2. ๋น…-์„ธํƒ€ θ(n) : ๋ณดํ†ต์ผ ๋•Œ์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜3. ๋น…-์˜ค O(n) : ์ตœ์•…์ผ ๋•Œ์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์žˆ๊ณ  → ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๋‹น์—ฐํžˆ ๋น…-์˜ค ํ‘œ๊ธฐ๋ฒ•์„ ๊ธฐ์ค€์œผ๋กœ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ!(ํ•ญ์ƒ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜๊ณ  ๋กœ์ง์„ ์งœ์•ผํ•จ) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ ๋กœ์ง์„ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ์ฝ”๋“œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•จ!์‹œ๊ฐ„ ๋ณต์žก๋„ ๋„์ถœ ๊ธฐ์ค€์€ 1. ์ƒ์ˆ˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์—์„œ ์ œ์™ธ 2. ๊ฐ€์žฅ ๋งŽ์ด ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜๊ฐ€ ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๊ธฐ์ค€์ด ๋จ ๋””๋ฒ„๊น…๋ฌธ๋ฒ•..
JJunGyo
'๐Ÿ”ฅ Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)