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

๐Ÿ’ป Computer Science191

[์šด์˜์ฒด์ œ] 2. ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ์ž…๋ ฅ์žฅ์น˜๋กœ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ์ •๋ณด๋ฅผ ํ”„๋กœ๊ทธ๋žจ ์ œ์–ด์— ๋”ฐ๋ผ ์ธ์ถœ ํ›„ ์—ฐ์‚ฐ์žฅ์น˜์—์„œ ์ฒ˜๋ฆฌ ์ฒ˜๋ฆฌํ•œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅ ๋˜๋Š” ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ ์ž…๋ ฅ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ์œ ์ž…๋˜๋Š” ์ •๋ณด๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ช…๋ น์–ด๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. ๋ช…๋ น์–ด : ์‹คํ–‰ํ•  ์‚ฐ์ˆ , ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๋™์ž‘์„ ๋ช…์‹œํ•˜๋Š” ๋ฌธ์žฅ์œผ๋กœ ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ์€ ํ”„๋กœ๊ทธ๋žจ์ด ๋œ๋‹ค. ๋ช…๋ น์–ด์˜ ๊ตฌ์กฐ ๋ช…๋ น์–ด๋Š” ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‹คํ–‰ํ•  ์—ฐ์‚ฐ์ธ ์—ฐ์‚ฐ ๋ถ€ํ˜ธ์™€ ๋ช…๋ น์–ด๊ฐ€ ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ๋ ˆ์ง€์Šคํ„ฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์ธ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ๋ช…์—ฐ์‚ฐ ๋ถ€ํ˜ธ (Operation Code): ์—ฐ์‚ฐ์„ ์ง€์ •ํ•˜๋ฉฐ ์‚ฐ์ˆ ์—ฐ์‚ฐ, ๋…ผ๋ฆฌ์—ฐ์‚ฐ, ์‹œํ”„ํŠธ, ๋ณด์ˆ˜ ๋“ฑ์„ ์ˆ˜ํ–‰ ํ”ผ์—ฐ์‚ฐ์ž (Operand): ์—ฐ์‚ฐํ•  ๋ฐ์ดํ„ฐ์˜ ์ •๋ณด๋ฅผ .. 2019. 12. 7.
[์šด์˜์ฒด์ œ] 1. ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์˜ ๊ตฌ์„ฑ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์˜ ๊ตฌ์„ฑ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ๋ฌผ๋ฆฌ์  ์žฅ์น˜์ธ ํ•˜๋“œ์›จ์–ด์™€ ๋ช…๋ น์–ด๋กœ ์–ด๋–ค ์ž‘์—…์„ ์ง€์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํ•˜๋“œ์›จ์–ด๋Š” ํฌ๊ฒŒ ํ”„๋กœ์„ธ์„œ(CPU) ๋ฉ”๋ชจ๋ฆฌ(RAM) ์ฃผ๋ณ€์žฅ์น˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  ์ด๋“ค์€ ์‹œ์Šคํ…œ ๋ฒ„์Šค๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. ํ”„๋กœ์„ธ์„œ ํ”„๋กœ์„ธ์„œ๋Š” ํ•˜๋“œ์›จ์–ด์— ๋ถ€์ฐฉ๋œ ๋ชจ๋“  ์žฅ์น˜์˜ ๋™์ž‘์„ ์ œ์–ดํ•˜๊ณ  ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค. ๋ณดํ†ต CPU๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•˜์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด์  ๋Š๋‚Œ์ด ๊ฐ•ํ•œ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ฃผ๋กœ ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์„œ์—์„œ๋Š” ํฌ๊ฒŒ ๋ ˆ์ง€์Šคํ„ฐ ์—ฐ์‚ฐ์žฅ์น˜ ์ œ์–ด ์žฅ์น˜๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ์ด๋“ค์€ ๋˜ํ•œ๋‚ด๋ถ€ ๋ฒ„์Šค๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค. ๋ ˆ์ง€์Šคํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๊ด€์ ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์šฉ๋„์— ๋”ฐ๋ผ ์ „์šฉ ๋ ˆ์ง€์Šคํ„ฐ ์™€ ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ์‚ฌ์šฉ ์šฉ๋„์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž ๊ฐ€์‹œ ๋ ˆ์ง€์Šคํ„ฐ(user-visible) ์‚ฌ์šฉ์ž ๋ถˆ๊ฐ€์‹œ ๋ ˆ์ง€์Šคํ„ฐ.. 2019. 12. 7.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ] 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.