Skip to content

Latest commit

ย 

History

History
326 lines (232 loc) ยท 21.9 KB

File metadata and controls

326 lines (232 loc) ยท 21.9 KB

โ‰๏ธ Datastructure QnA

Array vs. LinkedList

Array์™€ LinkedList์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์„ธ์š”
๋จผ์ € ์›ํ•˜๋Š” ์›์†Œ์— ์ ‘๊ทผํ• ๋•Œ Array๋Š” random access๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด Linkedlist๋Š” sequential access๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ์ฐพ์•„์•ผํ•ด์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n)์ด ๋ฉ๋‹ˆ๋‹ค.

์‚ฝ์ž…/์‚ญ์ œ์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด์€ O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๊ฑธ๋ฆฌ๊ณ , ๋งํฌํŠธ๋ฆฌ์ŠคํŠธ๋Š” O(1)์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ ๋ฐฉ์‹๋„ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋“ค์€ ์ธ์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์—ฐ์ด์–ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ๋งํฌํŠธ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ์ƒˆ๋กœ์šด ์š”์†Œ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜ ์ฃผ์†Œ๊ฐ€ ๋งํฌํŠธ๋ฆฌ์ŠคํŠธ์˜ ์ด์ „ ์š”์†Œ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋ฐฐ์—ด์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐฐ์—ด์ด ์„ ์–ธ๋˜์ž๋งˆ์ž compile time์— ํ• ๋‹น๋˜์–ด ์ง‘๋‹ˆ๋‹ค. (์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)

๋งํฌํŠธ๋ฆฌ์ŠคํŠธ์—์„œ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ runtime์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. (๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)

๋ฐฐ์—ด์€ stack ์„น์…˜์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๋งํฌํŠธ ๋ฆฌ์ŠคํŠธ๋Š” heap ์„น์…˜์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

array(list)์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•๊ณผ ๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์žฅ์ ๊ณผ ๋‹จ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”.

array

๋ฐฐ์—ด์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ์— ์ˆœ์„œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • ์š”์†Œ๋ฅผ ์ฐพ๊ณ  ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด array์˜ ์žฅ์ ์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— ์ด์— ๋”ฐ๋ฅธ ๋‹จ์ ๋„ ์กด์žฌํ•˜๋Š”๋ฐ, ์ˆœ์ฐจ์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ค‘๊ฐ„์— ์š”์†Œ๊ฐ€ ์‚ฝ์ž…๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ ๊ทธ ๋’ค์˜ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ํ•œ์นธ์”ฉ ๋ฐ€๊ฑฐ๋‚˜ ๋‹น๊ฒจ์ค˜์•ผํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ์ž‘์—…์ด ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋น„ํ•ด ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์€ ์ •๋ณด๊ฐ€ ์ž์ฃผ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ธฐ์—๋Š” ์ ์ ˆ์น˜ ์•Š์Šต๋‹ˆ๋‹ค.

list

๋ฆฌ์ŠคํŠธ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

๊ตฌํ˜„ ๋ฐฉ์‹์— ๋”ฐ๋ผ ํฌ๊ฒŒ array list์™€ linked list๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค.

array list

๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ํŠน์ • ์›์†Œ์— ์ ‘๊ทผ์ด ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€์™€ ์‚ญ์ œ๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ €์žฅํ•  ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋‹ค์‹œ ์กฐ์ •ํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐพ์•„ ๋ณต์ œํ•ด์•ผํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

linked list

๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๊ฐ ๋…ธ๋“œ์— ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๊ณ ์ •๋œ ํฌ๊ธฐ๋ฅผ ๊ฐ–์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ ์‹œ O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— ํŠน์ • ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ• ๋•Œ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฐพ์•„์•ผํ•˜๋ฏ€๋กœ O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ฌ ๋ณ„ ์ฃผ์‹ ์ฐจํŠธ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ฌ ๋ณ„ ์ฃผ์‹ ์ฐจํŠธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์š”์†Œ๊ฐ€ ์ค‘๊ฐ„์— ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๋Š” ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋‚ ์ž๋ณ„๋กœ ์ฃผ์‹ ๊ฐ€๊ฒฉ์ด ์ฐจ๋ก€๋Œ€๋กœ ์ €์žฅ๋˜์–ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ž…๋‹ˆ๋‹ค.

์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์ˆœ์„œ๋ฅผ ๋ณด์กดํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ˆœ์„œ๊ฐ€ ์—†๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋‚ ์งœ๋ณ„ ์ฃผ์‹ ๊ฐ€๊ฒฉ์„ ํ™•์ธํ•˜๊ธฐ ์–ด๋ ต๊ณ , ๋งค๋ฒˆ ์ „์ฒด ์ž๋ฃŒ๋ฅผ ์ฝ์–ด ๋“ค์ด๊ณ  ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Tree

BST์™€ binary tree์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
binary search tree๋Š” binary tree์˜ ์„ฑ์งˆ์„ ์ž์‹๋…ธ๋“œ๋ฅผ ์ตœ๋Œ€ 2๊ฐœ๊นŒ์ง€ ๊ฐ€์ง€๋Š” ์„ฑ์งˆ๊ณผ ํŠธ๋ฆฌ์˜ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ •์˜์ธ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์—๋Š” ์ž๊ธฐ ์ž์‹ ๋ณด๋‹ค ์ž‘์€ ํ‚ค๊ฐ’์„ ์˜ค๋ฅธ ์ชฝ์€ ์ž๊ธฐ ์ž์‹ ๋ณด๋‹ค ํฐ ํ‚ค๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” tree ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์„ฑ์งˆ๊ณผ ํ•จ๊ป˜ ๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ์— O(logn)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ท ํ˜• ์žกํžŒ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ Red-black tree๋‚˜ AVL tree๋ฅผ ์ด์šฉํ•œ๋‹ค.
์ค‘์œ„ ์ˆœํšŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์‹œ์˜ค.
```def inorder(self, node): if self.node == None: return self.inorder(node.left) print(node.key, end= ' ') self.inorder(node.right) ```
full binary tree์™€ complete binary tree์˜ ํŠน์ง•์„ ๋งํ•˜์‹œ์˜ค.
full binary tree๋Š” ์žŽ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ฅผ 2๊ฐœ ์•„๋‹ˆ๋ฉด 0๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. complete binary tree๋Š” ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ ˆ๋ฒจ์—์„œ ๋…ธ๋“œ๋“ค์ด ์™ผ์ชฝ ๋‹จ๋ง ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฝ‰ ์ฑ„์›Œ์ง„ใ„ด ์ด์ง„ํŠธ๋ฆฌ์ด๋‹ค. complete binary tree๋Š” 1์ฐจ์› ๋ฐฐ์—ด๋กœ๋„ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํŠธ๋ฆฌ์˜ ์ •์˜ ์ตœ์†Œ 3๊ฐ€์ง€๋ฅผ ๋งํ•˜์‹œ์˜ค.
ํŠธ๋ฆฌ๋Š” ์‚ฌ์ดํด์„ ๊ฐ€์ง€์ง€ ์•Š๊ณ  ๋…ธ๋“œ์—์„œ ๋ชจ๋“  ์ •์ ์ด ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜-1์ด๋‹ค. ๋˜ ๊ฐ„์„  ํ•˜๋‚˜๋ฅผ ์ž๋ฅด๋ฉด ํŠธ๋ฆฌ๊ฐ€ ๋‘ ๊ฐœ๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž„์˜์˜ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๋Š” ์œ ์ผํ•˜๋‹ค.

Stack and Queue

Stack, Queue, LinkedList์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์„ธ์š”
Stack์€ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ๋‚˜์˜ค๋Š” LIFO ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. Queue๋Š” ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” FIFO ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. LinkedList๋Š” ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ•˜๋‚˜์˜ ์ฐธ์กฐ๋งŒ ๊ฐ–๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
Stack์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”
์Šคํƒ์€ LIFO์˜ ์›๋ฆฌ๋กœ ๋™์ž‘ํ•˜๋Š” ์„ ํ˜•์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์Šคํƒ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์ชฝ์œผ๋กœ ์‚ฝ์ž…ํ•˜๊ณ  ์‚ญ์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋Š” ๋“ค์–ด๊ฐ„ ๋ฐ˜๋Œ€ ์ˆœ์„œ๋กœ ๋‚˜์˜ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์Šคํƒ์˜ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ํ™œ์šฉํ•˜์—ฌ โ€œ์›น ๋ธŒ๋ผ์šฐ์ € ๋’ค๋กœ๊ฐ€๊ธฐโ€,โ€ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ• ๊ณ„์‚ฐโ€, โ€œ์ˆ˜์‹์˜ ๊ด„ํ˜ธ ๊ฒ€์‚ฌโ€ ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Queue์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์„ธ์š”
ํ๋Š” FIFO์˜ ์›๋ฆฌ๋กœ ๋™์ž‘ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์ชฝ์—์„œ ์‚ฝ์ž…ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•œ์ชฝ์—์„œ ์‚ญ์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์˜ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ์˜ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ํ™œ์šฉํ•˜์—ฌ โ€œBFS ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰โ€, โ€œCPU ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ฅด๋งโ€ ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
Stack Overflow์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”
์šด์˜์ฒด์ œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ค‘ ํ•จ์ˆ˜์˜ ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์Šคํƒ์˜์—ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ํ˜ธ์ถœ๋˜์–ด ์Šคํƒ์˜์—ญ๊ณต๊ฐ„์ด ๊ฐ€๋“์ฐจ๊ฒŒ ๋˜๋ฉด stack overflow๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Heap

Priority Queue์˜ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊บผ๋‚ด๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํž™์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํž™์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ํž™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ผ์ข…์œผ๋กœ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ตœ๋Œ€๋ฉด ์ตœ๋Œ€ํž™, ์ตœ์†Œ๋ฉด ์ตœ์†Œํž™์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํž™์˜ ์ด๋Ÿฌํ•œ ํŠน์ง•์œผ๋กœ ํž™์˜ ๋ฃจํŠธ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ธ๋‹ค๋ฉด ์šฐ์„ ์ˆœ์œ„ ํ์˜ ๋ชฉ์ ์ธ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํž™์€ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ž์‹ ์˜ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๋Š” ์„ฑ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ด ์„ฑ์งˆ์„ ํ†ตํ•ด ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ ๋ชจ๋‘ O(logN)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Š” ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•œ ์šฐ์„ ์ˆœ์œ„ ํ๋ณด๋‹ค ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
Heap์˜ ์ข…๋ฅ˜์™€ ๊ฐ๊ฐ์˜ ํŠน์ง•์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
ํž™์˜ ์ข…๋ฅ˜์—๋Š” ์ตœ์†Œํž™๊ณผ ์ตœ๋Œ€ํž™์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํž™์€ ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์™€ ๋ฐ˜๋Œ€๋กœ ์ตœ๋Œ€ํž™์€ ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Max Heap์—์„œ์˜ Heapify ๊ณผ์ •์„ ์„ค๋ช…ํ•˜์‹œ์˜ค.
์›์†Œ ์‚ฝ์ž… ๊ณผ์ •์„ ์˜ˆ๋กœ ๋“ค๋ฉด ๋จผ์ € ๊ฐ€์žฅ ๋ง๋‹จ์˜ ๋…ธ๋“œ์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ๋น„๊ตํ•ด์„œ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ํฌ๋‹ค๋ฉด ๊ตํ™˜ํ•˜๊ณ  ์ž‘๋‹ค๋ฉด ํ•ด๋‹น ๋ถ€๋ถ„์—์„œ ์ •์ง€ํ•ด Heapify๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋กœ์ง์„ ์ตœ๋Œ€ํž™์˜ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์›์†Œ ์‚ญ์ œ ๊ณผ์ •์—์„œ๋Š” ๋จผ์ € ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ๋ฃจํŠธ๋กœ ์ด๋™ ํ›„์— ํฐ ๊ฐ’์„ ๊ฐ€์ง„ ์ž์‹๊ณผ ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•ด ๊ฐ€๋ฉฐ ํž™ ๊ตฌ์กฐ๋ฅผ ์™„์„ฑ์‹œํ‚ต๋‹ˆ๋‹ค.

Red-BlackTree

red black tree์˜ ์ •์˜, ์„ฑ์งˆ 4๊ฐ€์ง€๋ฅผ ๋งํ•˜์‹œ์˜ค
red black tree๋Š” ๋‹ค์Œ ๋„ค๊ฐ€์ง€์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผํ•œ๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์€ ๊ฒ€์ •์ด๋‹ค(root property). ๋ชจ๋“  leaf๋…ธ๋“œ๋Š” ๊ฒ€์ •์ด๋‹ค(external property). ๋นจ๊ฐ•๋…ธ๋“œ์˜ ์ž์‹์€ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ •์ด๋‹ค(internal property). ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฆฌํ”„๋…ธ๋“œ์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์—์„œ ๋งŒ๋‚˜๋Š” ๋ธ”๋ž™ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐ™๋‹ค.(depth property)
recoloring๊ณผ restructing์„ ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜์‹œ์˜ค
restructing์€ ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ๊ฐ€ ๊ฒ€์ •์ƒ‰์ผ ๋•Œ ์ˆ˜ํ–‰ํ•œ๋‹ค. restructing์€ ์‚ฝ์ž…๋œ ๋…ธ๋“œ, ๋ถ€๋ชจ ๋…ธ๋“œ, ์กฐ๋ถ€๋ชจ ๋…ธ๋“œ ์ด ์„ธ๊ฐ€์ง€๋ฅผ ์ •๋ ฌํ•˜๊ณ  bst ์„ฑ์งˆ์— ๋งž๊ฒŒ ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ๋ฐ”๊พผ ๋’ค์— ์ค‘๊ฐ„ ๊ฐ’์„ ๋ฃจํŠธ๋กœ ๋‹ฌ๊ณ  ๊ฒ€์ •์ƒ‰์œผ๋กœ ์น ํ•œ๋’ค ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋Š” ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ์น ํ•œ๋‹ค. ์‚ฝ์ž…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์œ„์น˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(logn)์ด๊ณ  ์‚ฝ์ž…๊ณผ ์ •๋ ฌ ๋ชจ๋‘ ์ƒ์ˆ˜ ์‹œ๊ฐ„์ด ๋“ค์–ด์„œ ์ตœ์ข…์ ์œผ๋กœ restructing์€ O(logn)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. recoloring์€ ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์ด ๋นจ๊ฐ•์ƒ‰์ผ๋•Œ ์ง„ํ–‰ํ•œ๋‹ค. ๋ถ€๋ชจ์™€ ๋ถ€๋ชจ์˜ ํ˜•์ œ์˜ ์ƒ‰๊น”์„ ๊ฒ€์ •์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์‚ฝ์ž…๋œ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ๋Š” ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ๋ฐ”๊พผ๋‹ค. ๋งŒ์•ฝ ๋ถ€๋ชจ๊ฐ€ root node๋ผ๋ฉด ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ ์ƒ‰๊น”์€ ๊ฒ€์ •์ด ๋˜๊ณ , ๋งŒ์•ฝ์— ์–ด๋–ค ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋ถ„์ธ ์„œ๋ธŒํŠธ๋ฆฌ๋ผ๋ฉด ๋ถ€๋ชจ์˜ ํ˜•์ œ ์ƒ‰๊น”์„ ๋ณด๊ณ  restructing์ด๋‚˜ recoloring์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด์— ๋”ฐ๋ฅธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” restructing๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ insertํ•ด์ค„ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋ฐ O(logn)์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉฐ ์ƒ‰๊น”๋งŒ ๋ฐ”๊ฟ”์ฃผ๋Š”๋ฐ ์ƒ์ˆ˜์‹œ๊ฐ„์ด ๊ฑธ๋ ค ์ตœ์ข…์ ์ธ recoloring์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(logn)์ด๋‹ค.
hash์—์„œ red-black ํŠธ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.
hash์˜ seperate chaining์„ ํ•  ๋•Œ, red-black tree๋กœ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ€์ฒดํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. threshold๊ฐ€ 8์ด์ƒ์ธ ๊ฒฝ์šฐ์— chainingํ•˜๋Š” ๋ถ€๋ถ„์„ red-black tree๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n)์ธ๋ฐ, red-black tree๋กœ ์น˜ํ™˜ํ•˜๊ฒŒ ๋˜๋ฉด O(logn)์œผ๋กœ ํ•ด์‹œ ์ถฉ๋Œ ์‹œ ๋” ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Hash Table

ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”
ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๊ณ  key-value ์Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ key๊ฐ’์œผ๋กœ ํ•ด์‹œ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์–ป์€ ๋ฐ์ดํ„ฐ์˜ ํ•ด์‹œ๊ฐ’์€ ํ•ด์‹œ bucket์˜ index๋กœ ์‚ฌ์šฉ๋˜๊ณ , ํ•ด๋‹น index์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

ํ•ด์‹œ ์ถฉ๋Œ๊ณผ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ์•ˆ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”
ํ•ด์‹œ ์ถฉ๋Œ์„ ์„ค๋ช…ํ•˜๊ธฐ์ „์— ํ•ด์‹œ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ž„์˜ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ์˜ ๊ฐ’์œผ๋กœ ๋งคํ•‘ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž„์˜ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ์˜ ํ•ด์‹œ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•œ ํ•ด์‹œ๊ฐ’์„ ๊ฐ–๋Š” ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด์‹œ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ์— Open Addressing, Seperate Chaining ๋ฐฉ์‹์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Open Addressing์€ ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋น„์–ด์žˆ๋Š” bucket์„ ์ฐพ์•„ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋น„์–ด์žˆ๋Š” bucket์„ ์ฐพ๋Š” ๋ฐฉ์‹์—๋Š” linear probing, quadratic probing, double hashing ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

linear probing์€ ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ์œ„์น˜๋กœ๋ถ€ํ„ฐ ๊ณ ์ •ํญ๋งŒํผ ์ด๋™ํ•˜๋ฉด์„œ ๋น„์–ด์žˆ๋Š” bucket์„ ์ฐพ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. quadratic probing์€ ํ•ด์‹œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ์œ„์น˜๋กœ๋ถ€ํ„ฐ n^2 ๋งŒํผ ์ด๋™ํ•˜๋ฉด์„œ ๋น„์–ด์žˆ๋Š” bucket์„ ์ฐพ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ double hashing ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ์˜ ํ•ด์‹œ๊ฐ’์„ ๋‹ค๋ฅธ ํ•ด์‹œ ํ•จ์ˆ˜๋กœ ํ•ด์‹ฑํ•˜์—ฌ ๋น„์–ด์žˆ๋Š” bucket์„ ์ฐพ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Seperate Chaining์€ ํ•ด์‹œ bucket์„ LinkedList๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ํ•ด์‹œ ์ถฉ๋Œ ๋ฐœ์ƒ์‹œ ํ•ด๋‹น bucket์˜ LinkedList์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

ํŠน์ • ๋ฒ„ํ‚ท์— ํ•ด๋‹นํ•˜๋Š” LinkedList์˜ ๋ฐ์ดํ„ฐ๊ฐ€ 8๊ฐœ๊ฐ€ ๋˜๋ฉด Red Black Tree๋กœ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์ง€๋ฉด LinkedList ์˜ ํƒ์ƒ‰ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ 6๊ฐœ๋กœ ์ค„์–ด๋“ค๋ฉด ๋‹ค์‹œ LinkedList๋กœ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” Red black Tree๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ์จ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์†๋„ ์ธก๋ฉด์˜ ์ด์ ์ด ํฌ์ง€ ์•Š๊ณ , ์˜คํžˆ๋ ค ๋ฉ”๋ชจ๋ฆฌ ์†Œ์š”๊ฐ€ ๋” ํฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์‚ญ์ œ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” Open Addressing์˜ ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”
Open Addressing ์˜ ํƒ€๊ฒŸ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฐฉ๋ฌธํ•œ ๋ฒ„ํ‚ท์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•˜๊ณ , ๋น„์–ด์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฒ„ํ‚ท์† ๋ฐ์ดํ„ฐ๊ฐ€ ํƒ€๊ฒŸ ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ Open Addressing์˜ ํƒ์ƒ‰ ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด ์‚ญ์ œํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์—์„œ ๋นˆ ๋ฒ„ํ‚ท์„ ๋งŒ๋‚˜๋ฉด ํƒ์ƒ‰์ด ์ข…๋ฃŒ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ญ์ œ๋œ ๋ฒ„ํ‚ท์— dummy node๋ฅผ ์ฑ„์šฐ๊ฑฐ๋‚˜ flag๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํƒ์ƒ‰ ๊ณผ์ •์—์„œ ๋นˆ ๋ฒ„ํ‚ท์„ ๋งŒ๋‚˜๋”๋ผ๋„ ํƒ์ƒ‰์„ ์ด์–ด๊ฐ€๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

LinkedList์™€ Red-Black Tree๋กœ Seperate Chaining์„ ๊ตฌํ˜„ํ•  ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์— ๋Œ€ํ•ด ๊ฐ๊ฐ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”
Seperate Chaining ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ํ•ด์‹ฑ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ 8๊ฐœ ๋˜๋ฉด LinkedList์—์„œ Red Black Tree๋กœ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ LinkedList์˜ ํƒ์ƒ‰ ์†๋„๋Š” ๋А๋ ค์ง€์ง€๋งŒ, Red Black Tree๋Š” O(logN)์œผ๋กœ ๋น„๊ต์  ์ค€์ˆ˜ํ•œ ํƒ์ƒ‰ ์†๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

ํ•ด์‹œ ์ถœ๋Œ์ด ๋ฐœ์ƒํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ 6๊ฐœ๋กœ ์ค„์–ด๋“ค๋ฉด Red Black Tree์—์„œ LinkedLisf๋กœ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ 6๊ฐœ ์ •๋„์ด๋ฉด Red Black Tree๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ์จ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์†๋„ ์ธก๋ฉด์˜ ์ด์ ์ด ๊ทธ๋ฆฌ ํฌ์ง€ ์•Š๊ณ , ์˜คํžˆ๋ ค ๋ฉ”๋ชจ๋ฆฌ ์†Œ์š”๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— LinkedList๋กœ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

Graph

๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹๋“ค์˜ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜์‹œ์˜ค.
๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์—๋Š” ์ธ์ ‘ํ–‰๋ ฌ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์ธ์ ‘ํ–‰๋ ฌ์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ๋ชจ๋‘ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๋ฉด ๋‘ ์ ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ๋•Œ 0(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ „๋ถ€ ์ˆœํšŒํ•ด์•ผํ•˜๊ณ  ์ •์ ์˜ ๊ฐœ์ˆ˜๊ฐ€ n๊ฐœ์ธ ๊ทธ๋ž˜ํ”„๋Š” ๊ฐ„์„ ์˜ ์ˆ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ n^2์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ๊ฐ์˜ ์ •์ ์— ์ธ์ ‘ํ•œ ์ •์ ๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋งŒํผ์˜ ๊ณต๊ฐ„๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ ‘ํ–‰๋ ฌ์— ๋น„ํ•ด ๊ณต๊ฐ„์˜ ๋‚ญ๋น„๊ฐ€ ์ ๊ณ  ์ •์ ๋“ค์˜ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋ฅผ n๊ฐœ๋ผ๊ณ  ํ–ˆ์„๋•Œ O(n)์˜ ์‹œ๊ฐ„์ด๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ํŠน์ • ๋‘์ ์ด ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ธ์ ‘ํ–‰๋ ฌ์— ๋น„ํ•ด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜ํ”„์™€ ํŠธ๋ฆฌ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
์ฒซ๋ฒˆ์งธ๋กœ ํŠธ๋ฆฌ๋Š” ๋‘ ๊ฐœ์˜ ์ •์  ์‚ฌ์ด์— ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ๋งŒ ์กด์žฌํ•˜๋Š” ๋ฐ˜๋ฉด ๊ทธ๋ž˜ํ”„๋Š” ๋…ธ๋“œ ์‚ฌ์ด์— ๋‹จ๋ฐฉํ–ฅ ๋ฐ ์–‘๋ฐฉํ–ฅ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘๋ฒˆ์จฐ๋กœ ๊ทธ๋ž˜ํ”„์—๋Š” ๋ฃจํ”„์™€ ์ž์ฒด ๋ฃจํ”„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํŠธ๋ฆฌ์—๋Š” ๋ฃจํ”„์™€ ์ž์ฒด ๋ฃจํ”„๊ฐ€ ์žˆ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์„ธ๋ฒˆ์งธ, ํŠธ๋ฆฌ์—๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ๊ฐ€ ์žˆ๊ณ  ๊ทธ๋ž˜ํ”„๋Š” ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
BFS์™€ DFS์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜์‹œ์˜ค.
DFS๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์œผ๋กœ ํƒ์ƒ‰ ๋…ธ๋“œ์˜ ์ธ์ ‘ ๋…ธ๋“œ์˜ ์ž์‹๋“ค์„ ๋ชจ๋‘ ํƒ์ƒ‰ํ•˜๊ณ , ๋‹ค์‹œ ๋Œ์•„์™€์„œ ํƒ์ƒ‰ ๋…ธ๋“œ์˜ ๋‹ค๋ฅธ ์ธ์ ‘ ๋…ธ๋“œ ์ž์‹๋“ค์„ ๋ชจ๋“œ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์Šคํƒ์ด๋‚˜ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด BFS๋Š” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์œผ๋กœ ํƒ์ƒ‰ ๋…ธ๋“œ์˜ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ์กฐ๊ฑด ๋‚ด์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค๋ผ๋ฉด ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด O(V+E), ์ธ์ ‘ ํ–‰๋ ฌ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด O(V^2)๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

MinimumSpanningTree

์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
๊ทธ๋ž˜ํ”„์˜ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ์ค‘ ๊ฐ€์„ ์˜ ๊ฐ€์ค‘์น˜(edge weight) ๊ฐ’์ด ์ตœ์†Œ์ธ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ž€ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ์ด ์‚ฌ์ดํด์—†์ด ์—ฐ๊ฒฐ๋œ ํ˜•ํ‡ด๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

ํฌ๋ฃจ์Šค์นผ๊ณผ ํ”„๋ฆผ์„ ํ†ตํ•ด์„œ MST๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋ฃจ์Šค์นผ๊ณผ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํฌ๋ฃจ์Šค์นผ์˜ ๊ฒฝ์šฐ ๊ทธ๋ž˜ํ”„์˜ ๊ฐ„์„ ๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜์˜ ๊ฐ„์„ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ MST ์ง‘ํ•ฉ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

union-find๋ฅผ ์ด์šฉํ•ด์„œ ์‚ฌ์ดํด์ด ์ƒ์„ฑ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ฉด(์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ„์„ ์˜ ์–‘ ๋ ์ •์ ์ด ๊ฐ™์€ ์ง‘ํ•ฉ์— ์†ํ•ด์žˆ๋Š”์ง€ ํ™•์ธ) ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๊ฐ„์„ ๋“ค์„ ์ •๋ ฌํ•˜๋Š” ์‹œ๊ฐ„์— ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. ํ€ต ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ด์„œ ์ •๋ ฌํ•œ๋‹ค๋ฉด O(ElogE) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋ฆผ์˜ ๊ฒฝ์šฐ๋Š” ์‹œ์ž‘ ์ •์ ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ๊ฐ„์„ ๋“ค ์ค‘ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜๋ฅผ ์„ ํƒํ•ด๊ฐ€๋ฉฐ ๋‹จ๊ณ„์ ์œผ๋กœ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด๊ฐ€๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋ฏ€๋กœ O(V) ์ž…๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ(ํž™)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งค ๋…ธ๋“œ๋งˆ๋‹ค ์ตœ์†Œ ๊ฐ„์„ ์„ ์ฐพ๋Š” ์‹œ๊ฐ„์€ O(logV) ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํƒ์ƒ‰๊ณผ์ •์—๋Š” O(VlogV)๊ฐ€ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ์˜ ์ธ์ ‘ ๊ฐ„์„ ์„ ์ฐพ๋Š” ์‹œ๊ฐ„์€ O(E) ์ด ๊ฑธ๋ฆฌ๊ณ , ๊ฐ ๊ฐ„์„ ์— ๋Œ€ํ•ด ํž™์„ ์—…๋ฐ์ดํŠธํ•ด์ฃผ๋Š” ๊ณผ์ •์— O(logV) ๊ฐ€ ๊ฑธ๋ ค ์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌ์„ฑ์— O(ElogV) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ O(VlogV+ElogV) = O((V+E)logV) ๋กœ O(ElogV) ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

(โˆตE๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ V๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ)

๋งŒ์•ฝ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ์•„๋‹Œ ๋ฐฐ์—ด๋กœ ๊ตฌ์„ฑํ•œ๋‹ค๋ฉด, ๊ฐ ์ •์ ์— ์ตœ์†Œ ๊ฐ„์„ ์„ ์ฐพ๋Š” ํƒ์ƒ‰๊ณผ์ •์— O(V^2) ์ด ๊ฑธ๋ฆฌ๊ณ , ํƒ์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ์ ‘ํ•œ ๊ฐ„์„ ์„ ์ฐพ์•„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋ฏ€๋กœ O(E*1) ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” (O(V^2)์ด ๋ฉ๋‹ˆ๋‹ค.

ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
ํฌ๋ฃจ์Šค์นผ์€ ๊ฐ„์„  ์œ„์ฃผ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ณ , ํ”„๋ฆผ์€ ์ •์  ์œ„์ฃผ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค.

ํฌ๋ฃจ์Šค์นผ์˜ ๊ฒฝ์šฐ ๊ทธ๋ž˜ํ”„์˜ ๊ฐ„์„ ๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜์˜ ๊ฐ„์„ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ MST ์ง‘ํ•ฉ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ ,

ํ”„๋ฆผ์˜ ๊ฒฝ์šฐ๋Š” ์‹œ์ž‘ ์ •์ ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ๊ฐ„์„ ๋“ค ์ค‘ ๋‚ฎ์€ ๊ฐ€์ค‘์น˜๋ฅผ ์„ ํƒํ•ด๊ฐ€๋ฉฐ ๋‹จ๊ณ„์ ์œผ๋กœ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด๊ฐ€๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ ์€ ๊ฒฝ์šฐ์—๋Š” ํฌ๋ฃจ์Šค์นผ์„ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ๋„ค๋Š” ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.