๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’ป Computer Science/- Data Structure, Algorithm147

[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] 09 ์ง‘ํ•ฉ์˜ ์ฒ˜๋ฆฌ ์ง‘ํ•ฉ์˜ ์ฒ˜๋ฆฌ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ง‘ํ•ฉ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ์œ„ํ•œ ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ ์ง‘ํ•ฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค. ์ง‘ํ•ฉ์˜ ๊ด€๋ฆฌ์—์„œ ํ•„์š”ํ•œ ์—ฐ์‚ฐ์€ ์ž„์˜์˜ ์›์†Œ๊ฐ€ ์–ด๋А ์ง‘ํ•ฉ์— ์†ํ•˜๋Š”์ง€ ์•Œ๋‚˜๋‚ด๋Š” ์—ฐ์‚ฐ๊ณผ ๋‘ ์ง‘ํ•ฉ์„ ํ•ฉํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ง ํ•˜๋Š” ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ ์ง‘ํ•ฉ์€ ์„œ๋กœ์˜ ๊ต์ง‘ํ•ฉ์ด ๊ณต์ง‘ํ•ฉ์ธ ๊ฒฝ์šฐ๋ฅผ ๋œปํ•œ๋‹ค. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์ง‘ํ•ฉ์˜ ์ฒ˜๋ฆฌ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ํ‘œํ˜„์€ ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๋‹ค. ++๊ฐ ์›์†Œ๋‹น ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋“ค์„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค++ ๋…ธ๋“œ๋Š” ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ์™€ ์›์†Œ๋ฅผ ๊ฐ–๋Š” ํ•œ ๊ฐœ์˜ ํ•„๋“œ๋กœ ์ด๋ฃจ์–ด ์ง„๋‹ค. ๋‹ค์Œ ์›์†Œ ํฌ์ธํ„ฐ -> ๋‹ค์Œ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ. ๊ฐ ์ง‘ํ•ฉ์—๋Š” ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” tail์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋‘”๋‹ค. ๋Œ€ํ‘œ ์›์†Œ ํฌ์ธํ„ฐ -.. 2019. 11. 23.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] ํ•ด์‹œ ํ…Œ์ด๋ธ” (Hash Table) ํ•ด์‹œ ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๊ฒ€์ƒ‰์˜ ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(1)์ด ๋˜๋Š” ๊ฒ€์ƒ‰์— ์ตœ๊ณ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋Š” ์›์†Œ๊ฐ€ ์ €์žฅ๋  ์ž๋ฆฌ๊ฐ€ ์ด๋ฏธ ํŠธ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ์›์†Œ์™€ ๋น„๊ตํ•˜์—ฌ ๊ฒฐ์ •๋˜๋Š” ๋ฐ˜๋ฉด, ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ์›์†Œ๊ฐ€ ์ €์žฅ๋  ์ž๋ฆฌ์— ๊ฐ’์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ‚ค -> ์ฃผ์†Œ ๊ณ„์‚ฐ -> ํ…Œ์ด๋ธ” ์ฐธ์กฐ ์˜ ํ๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ๊ฒ€์ƒ‰ ํ‚ค ํ•ด์‹œ ํ•จ์ˆ˜ h(x) = x mod m์— ์˜ํ•ด ๊ฒ€์ƒ‰ ํ‚ค๊ฐ€ ๊ฒฐ์ •๋˜๊ณ  x๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฐ’,(๋ฐฐ์—ด ๊ฐ’) m์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋ฅผ ๋œปํ•œ๋‹ค. ์ฃผ์†Œ ๊ณ„์‚ฐ ์ฃผ์†Œ ๊ณ„์‚ฐ์€ ๊ฒ€์ƒ‰ ํ‚ค๋ฅผ ํ†ตํ•ด์„œ x mod m์„ ์‹ค์งˆ์ ์œผ๋กœ ํ–‰ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ํ…Œ์ด๋ธ” ์ฐธ์กฐ ๊ฒ€์ƒ‰ ํ‚ค๋ฅผ ํ†ตํ•œ ์ฃผ์†Œ ๊ณ„์‚ฐ์ด ์ด๋ฃจ์–ด์ง„ ํ›„ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ์›์†Œ๊ฐ€ ์ €์žฅ๋  ์ž๋ฆฌ๊ฐ€ ๊ฐ’์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฏ€๋กœ ํ‰๊ท  ํ•œ .. 2019. 11. 23.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ(Red-Black Tree) ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ(Red-Black Tree) ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์—์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log n)์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ  O(n)์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•˜์˜€๋Š”๋ฐ ์ด๋Š” ํŠธ๋ฆฌ์˜ ๋†’์ด์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋‹จ์ ๋“ค์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ ์•ˆํ•ด ๋‚ธ ๊ฒƒ์€ ๋ฐ”๋กœ ==๊ท ํ˜•์žกํžŒ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ== ์ด๋‹ค. ๊ท ํ˜•์žกํžŒ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋ž€ ๊ฒƒ์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์—๋„ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ๋งž๊ฒŒ ์œ ์ง€๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ์— ๋ ˆ๋“œ ๋˜๋Š” ๋ธ”๋ž™์˜ ์ƒ‰์ƒ์„ ์น ํ•˜๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•ดํ•œ๋‹ค. 1. Root Property: ๋ฃจํŠธ๋Š” ๋ธ”๋ž™์ด๋‹ค. 2. External Property: ๋ชจ๋“  ๋ฆฌํ”„(NIL)๋Š” ๋ธ”๋ž™์ด๋‹ค. 3. Internal Property: ๋…ธ๋“œ๊ฐ€ ๋ ˆ๋“œ์ด๋ฉด ๊ทธ ๋…ธ๋“œ์˜ ์ž์‹์€ ๋ฐ˜๋“œ์‹œ ๋ธ”๋ž™์ด๋‹ค.. 2019. 11. 23.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree) ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree) ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๊ธฐ ์ „์— ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์•Œ๊ณ  ๋„˜์–ด๊ฐ€์ž ##ํŠธ๋ฆฌ(Binary Search Tree)๋ž€? ํŠธ๋ฆฌ๋ž€ ์ž๋ฃŒ๋“ค์ด List, Stack, Queue์™€ ๊ฐ™์€ 1:1 ๊ด€๊ณ„์˜ ์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ 1:n ๊ด€๊ณ„์˜ ๋น„์„ ํ˜• ๊ตฌ์กฐ๋กœ ๊ณ„์ธต ๊ด€๊ณ„๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ณ„์ธตํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ˆซ์ž๋“ค์€ ์•„๋ž˜์˜ ์ˆซ์ž๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ด€๊ณ„๋ฅผ ๊ฐ–๊ณ  ์ด๋ฅผ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ผ๊ณ  ํ•œ๋‹ค. ํ˜•์ œ ๊ด€๊ณ„๋ž€? 30์€ ์•„๋ž˜๋กœ(๊ณ„์ธต์ ์œผ๋กœ) 20๊ณผ 40์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ถ€๋ชจ๋Š” 30์ด ๋˜๊ณ  ์ž์‹์€ ๊ฐ๊ฐ 20๊ณผ40์ด ๋˜๋ฉฐ ์ด ๋‘˜์€ ์„œ๋กœ ํ˜•์ œ๊ด€๊ณ„ ๋ผ๊ณ ํ•œ๋‹ค. ๋…ธ๋“œ๋ž€? ์ด ๋•Œ 30์€ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๋˜๊ณ  20๊ณผ 40์€ ๊ฐ๊ฐ์˜ ์ž์‹ ๋…ธ๋“œ๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ์ด๋ฅผ ๋ฏธ๋ฃจ์–ด ๋ณด์•˜์„ ๋•Œ ๋…ธ๋“œ๋Š” ๊ฐ๊ฐ์˜ .. 2019. 11. 23.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] ํ€ต ์ •๋ ฌ (Quick Sort) ํ€ต ์†ŒํŠธ(Quick Sort)๋ž€? ํ€ต ์ •๋ ฌ์€ ํ‰๊ท ์ ์œผ๋กœ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๊ฐ€์ ธ ํ˜„์žฅ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ฐ”๋กœ ์˜ˆ๋กœ ์„ค๋ช…์„ ํ•˜์ž๋ฉด ์ •๋ ฌํ•  ๋ฐฐ์—ด A={31,11,2,6,9} ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ๋•Œ ๊ธฐ์ค€ ์›์†Œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ทธ ๊ฐ’๋ณด๋‹ค ํฐ ์›์†Œ๋Š” ๋’ค์—, ์ž‘์€ ์›์†Œ๋Š” ์•ž์— ๋ฐฐ์น˜๋ฅผ ํ•˜๋Š” ์‹์œผ๋กœ ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ๊ธฐ์ค€ ์›์†Œ๋ฅผ ์žก๋Š”๋‹ค. ๊ธฐ์ค€ ์›์†Œ์˜ ์™ผ์ชฝ์€ ๊ธฐ์ค€ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’, ์˜ค๋ฅธ์ชฝ์€ ๊ธฐ์ค€ ์›์†Œ๋ณด๋‹ค ํฐ ๊ฐ’. ์™ผ์ชฝ์— ๋Œ€ํ•ด์„œ๋„ ์žฌ๊ท€ํ˜ธ์ถœ์„ ์‹คํ–‰ํ•œ๋‹ค. ์˜ค๋ฅธ์ชฝ์— ๋Œ€ํ•ด์„œ๋„ ์žฌ๊ท€ํ˜ธ์ถœ์„ ์‹คํ–‰ํ•œ๋‹ค. 1๋ผ์šด๋“œ ๊ธฐ์ค€ ์›์†Œ๋ฅผ ์žก๋Š”๋‹ค -> ๊ธฐ์ค€์›์†Œ: 9 -> ๊ธฐ์ค€์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ A[0]๋ถ€ํ„ฐ ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉฐ ์žฌ๋ฐฐ์น˜ ํ•œ๋‹ค. -> A={2, 6, 9, 31, 11}; 2๋ผ์šด๋“œ ๊ธฐ์ค€ ์›์†Œ๋ฅผ ์žก๋Š”๋‹ค -> ๊ธฐ์ค€์›์†Œ: 11 -> ๊ธฐ์ค€.. 2019. 11. 23.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort) ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)๋ž€? ๋ณ‘ํ•ฉ์ •๋ ฌ์€ ์•ž์„œ ์„ค๋ช…ํ•œ ์„ ํƒ ์ •๋ ฌ, ๋ฒ„๋ธ” ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ๊ณผ๋Š” ๋น„๊ต ํ•  ์ˆ˜ ์—†๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„์ธ O(n log n)์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ ๊ฐœ๋…์˜ ์‹œ์ดˆ๊ฐ€ ๋˜์—ˆ๋–ค ํฐ ๋…ธ์ด๋งŒ(John von Neumann)์ด ์ œ์•ˆํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌ์˜ ํšจ์œจ์„ ๊ทน๋Œ€ํ™” ์‹œ์ผฐ๋‹ค. ๊ณผ์ • ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฐฐ์—ด์„ ์ ˆ๋ฐ˜์œผ๋กœ ์ž˜๋ผ ๋น„์Šทํ•œ ํฌ๊ธฐ์˜ ๋‘ ๋ถ€๋ถ„์˜ ๋ฐฐ์—ด์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ๊ฐ ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 0์ด ๋  ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ณ  0์ด ๋˜๋ฉด ๊ฐ ๋ถ€๋ถ„์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•ฉ์น˜๋Š” ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํ•ฉ์น˜๋Š” ๊ณผ์ •์ด ์ˆ˜ํ–‰๋  ๋•Œ ์‹ค์งˆ์  ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋‹จ๊ณ„๋ฅผ ์„ธ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 1. ๋ถ„ํ•  : ์ž…๋ ฅ ๋ฐฐ์—ด์„ ๊ฐ™์€ ํฌ๊ธฐ์˜ 2 ๊ฐœ์˜ ๋ถ€๋ถ„ ๋ฐฐ์—ด๋กœ ๋ถ„ํ• ํ•œ๋‹ค.. 2019. 11. 23.