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

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

[์ž๋ฃŒ ๊ตฌ์กฐ] - ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ (4)-์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ์ž๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ :: Binary Search Tree implementation by java ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐ ์šฉ์–ด ์™€ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜์™€ ๊ธฐ๋ณธ์— ๋Œ€ํ•œ ์ง€์‹์ด ์žˆ์–ด์•ผ ์›ํ™œํ•œ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ˆ ์•„์ง ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•œ ์‚ฌ๋žŒ๋“ค์€ ๊ผญ ํ•œ ๋ฒˆ ๊ฐ€๋ณ๊ฒŒ ์ฝ๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ Binary Search Tree ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ Binary Search Tree๋ผ๊ณ  ํ•œ๋‹ค. ๊ธฐ๋ณธ ์ „์ œ : ํŠธ๋ฆฌ์˜ ํ‚ค์—๋Š” ๊ฐ’์ด ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋ฉฐ ๊ฐ’๋“ค์€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ์ง‘๋‹จ์ด ์กด์žฌํ•˜๋Š” ์ „์ˆœ์„œ ์—ฌ์•ผ ํ•œ๋‹ค. ์กฐ๊ฑด 1 : ์–ด๋–ค ๋…ธ๋“œ N์„ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ ๋…ธ๋“œ์˜ ๋ชจ๋“  ํ‚ค ๊ฐ’์€ ๋…ธ๋“œ N์˜ ํ‚ค ๊ฐ’ ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค. ์กฐ๊ฑด 2 : ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์€ ๋…ธ๋“œ N์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค. ์กฐ๊ฑด 3 : ๊ฐ™์€ ํ‚ค์˜ ๊ฐ’์„ ๊ฐ–๋Š” ๋…ธ๋“œ๋Š” .. 2020. 6. 18.
[์ž๋ฃŒ ๊ตฌ์กฐ] - ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ (3)-์ด์ง„ ํŠธ๋ฆฌ์™€ ์ข…๋ฅ˜(์™„์ „, ํฌํ™”, ์™„๋ฒฝ, ๊ท ํ˜•) :: Binary Tree (Full, Complete, Perfect, Balanced) ์ด์ง„ ํŠธ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•ž์œผ๋กœ ๋งˆ์ฃผํ•˜๊ฒŒ๋  ํŠธ๋ฆฌ(Red-Black Tree, AVL Tree, Segment Tree)๋“ค์ค‘ ๊ฐ€์žฅ ์‰ฝ๊ณ  ์ž์ฃผ ์“ฐ์ด๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์ด์ง„ ํŠธ๋ฆฌ Binary Tree ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ๊ฐ€ ์™ผ์ชฝ ์ž์‹๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ๊ฐ–๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์ด ๋•Œ ์ค‘์š”ํ•œ ์ ์ด ์™ผ์ชฝ ์ž์‹๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ํ•˜๋‚˜์”ฉ๋งŒ ๊ฐ€์ ธ์•ผ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์ง„ ํŠธ๋ฆฌ๋Š” ์™ผ์ชฝ ์ž์‹๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ๊ตฌ๋ถ„ํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ํŠธ๋ฆฌ์˜ ๊ฐœ๋…๊ณผ ์šฉ์–ด ์—์„œ ๋ฐฐ์› ๋“ฏ์ด ์˜ค๋ฅธ์ชฝ ์ž์‹์€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ฐ–๊ณ  ์™ผ์ชฝ์€ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ์ด์ง„ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•˜์œผ๋‹ˆ ๊ทธ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ 5๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ํ•œ๊ธ€๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๊ณผ์ •์—์„œ ์—ฌ๋Ÿฌ ์ฐธ๊ณ  ์„œ์ ๋“ค์ด ์ž˜ ๋ชป ๋ฒˆ์—ญํ•˜์—ฌ ์ž˜ ๋ชป ์•Œ๊ฒŒ.. 2020. 6. 18.
[์ž๋ฃŒ ๊ตฌ์กฐ] - ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ(2)-ํŠธ๋ฆฌ์˜ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)๊ณผ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS) :: Tree-Search (Breadth-First Search, Depth-First Search) ์ง€๋‚œ ์‹œ๊ฐ„์— ์šฐ๋ฆฌ๋Š” ํŠธ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์šฉ์–ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์œผ๋‹ˆ ์ด์ œ ํŠธ๋ฆฌ๋ฅผ ํŒŒ๊ณ ๋“ค ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค. ์›๋ž˜ BFS์™€ DFS๋Š” ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ๊ตฌ์กฐ์ฏค ๊ฐ€์„œ์•ผ ๊ตฌํ˜„๋„ ํ• ๋งŒํ•˜๊ณ  ์žฌ๋ฐŒ์ง€๋งŒ ๋ง‰์ƒ ๊ฐ€์„œ ํ•˜๋ ค๋ฉด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ฐ€๋ณ๊ฒŒ ์ฝ์–ด๋ณด๊ณ  ์ด๋Ÿฐ๊ฒŒ ์žˆ๊ตฌ๋‚˜ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ์‹œ๊ฐ„์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ BFS::๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์€ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ ˆ๋ฒจ์—์„œ ์‹œ์ž‘ํžˆ์„œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•œ ๋ ˆ๋ฒจ์—์„œ ๊ฒ€์ƒ‰์ด ๋๋‚˜๋ฉด ๋‹ค์Œ ๋ ˆ๋ฒจ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ๋ฐฉ์‹์œผ ๊ฒ€์ƒ‰ ๊ตฌ์กฐ์ด๋‹ค. ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์€ ๊ฐ€๊นŒ์šด ์ •์ ์„ ๋จผ์ € ๋ฐฉ๋ฌธ ํ•˜๊ณ  ๋ฉ€๋ฆฌ ์žˆ๋Š” ์ •์ ์„ ๋‚˜์ค‘์— ๋ฐฉ๋ฌธํ•œ๋‹ค๋Š” ์ ์—์„œ ํŠน์ • ์ •์ ๊ณผ์˜ ๊ด€๊ณ„๊ฐ€ ์ค‘์š”ํ•œ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ „ ์„ธ.. 2020. 6. 18.
[์ž๋ฃŒ ๊ตฌ์กฐ] - ํŠธ๋ฆฌ ์ž๋ฃŒ ๊ตฌ์กฐ(1)-๊ธฐ๋ณธ ํŠธ๋ฆฌ ์šฉ์–ด ๋ฐ ๊ฐœ๋… ์ •๋ฆฌ :: Tree Data Structure. ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ผ์ƒ์„ ์‚ด๋ฉด์„œ ๋ชจ๋ฅด์ง€๋งŒ ์ž์ฃผ ๋งˆ์ฃผํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. ์ด๋ฅผํ…Œ๋ฉด ์šฐ๋ฆฌ ๋ถ€๋ชจ์™€ ์ž์‹์˜ ๊ด€๊ณ„ ๋˜ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค. ํŠธ๋ฆฌ ํ•˜๋ฉด ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ปดํ“จํ„ฐ์˜ File System์ด๋‹ค. ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์šฐ๋ฆฌ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ๋˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํŒŒ๊ณ  ๋“ค์–ด๊ฐ€์„œ ํŒŒ์ผ์„ ์ฐพ๊ณค ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํŠธ๋ฆฌ์˜ ์‚ฌ์šฉ์ด๋‹ค. ๋” ๋‹ค์–‘ํ•œ ํŠธ๋ฆฌ์˜ ์‚ฌ์šฉ์„ ๋ณด๊ณ  ํŠธ๋ฆฌ๋ฅผ ์œ ์ถ”ํ•ด๋ณด์ž! File System HTML Tag ๊ตฌ์กฐ ๋„-์‹œ๊ตฐ๊ตฌ-์๋ฉด๋™-์˜ ์ฃผ์†Œ ์ฒด๊ณ„ DBMS ๋ผ์šฐํ„ฐ ํ†ต์‹  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฒ€์ƒ‰ ์—”์ง„ ์œ„์—์„œ ๋‚˜์˜จ ์‚ฌ์šฉ๋“ค์ด ๊ฐ–๋Š” ๊ฐ€์žฅ ๋‘๋“œ๋Ÿฌ์ง€๋Š” ๊ณตํ†ต์ ์ด ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ ๊ณ„์ธต ๊ตฌ์กฐ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ณ„์ธต ๊ตฌ์กฐ ํŠธ๋ฆฌ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋Œ€ํ‘œ์  ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๊ณ„์ธต ๊ตฌ์กฐ๋ผ๊ณ  ํ•จ์€ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ์˜.. 2020. 6. 18.
[์•Œ๊ณ ๋ฆฌ์ฆ˜-PS(์žฌ๊ท€)] Java๋กœ ํ•˜๋…ธ์ด ํƒ‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์žฌ๊ท€์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ :: Hanoi Tower Algorithm Java Code by recursion ํ•˜๋…ธ์ด ํƒ‘์€ ์ •๋ง ์œ ๋ช…ํ•œ ํผ์ฆ์ด๋‹ค. ํ•˜๋…ธ์ด ํƒ‘์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด ํ•˜๋…ธ์ดํƒ‘ ์œ„ํ‚ค ์—์„œ ์ž์„ธํžˆ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ๋„ ์žฌ๋ฐŒ์„ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜๋…ธ์ด ํƒ‘์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ์„ธ ๊ฐœ์˜ ๊ธฐ๋‘ฅ๊ณผ ์ด ๊ธฐ๋‘ฅ์— ๊ฝ‚์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๊ฐ€ ๋‹ค์–‘ํ•œ ์›ํŒ๋“ค์ด ์žˆ๊ณ , ํผ์ฆ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—๋Š” ํ•œ ๊ธฐ๋‘ฅ์— ์›ํŒ๋“ค์ด ์ž‘์€ ๊ฒƒ์ด ์œ„์— ์žˆ๋„๋ก ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ ์žˆ๋‹ค. ๊ฒŒ์ž„์˜ ๋ชฉ์ ์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋ฉด์„œ, ํ•œ ๊ธฐ๋‘ฅ์— ๊ฝ‚ํžŒ ์›ํŒ๋“ค์„ ๊ทธ ์ˆœ์„œ ๊ทธ๋Œ€๋กœ ๋‹ค๋ฅธ ๊ธฐ๋‘ฅ์œผ๋กœ ์˜ฎ๊ฒจ์„œ ๋‹ค์‹œ ์Œ“๋Š” ๊ฒƒ์ด๋‹ค. ์กฐ๊ฑด ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์›ํŒ๋งŒ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ํฐ ์›ํŒ์ด ์ž‘์€ ์›ํŒ ์œ„์— ์žˆ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. -> ํ•ญ์ƒ ์ž‘์€ ์›๋ฐ˜์ด ์œ„์— ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•˜๋…ธ์ด ํƒ‘์˜ ์›ํŒ์„ ๋ชจ๋‘ ์˜ฎ๊ธฐ๋ ค๋ฉด (2^n - 1)์˜ ๊ฒฝ์šฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์žฌ๊ท€ ํ˜ธ์ถœ์— ๋Œ€ํ•ด์„œ ๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น .. 2020. 6. 13.
[์ž๋ฃŒ๊ตฌ์กฐ-PS] Java ์—์„œ ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„ํ•˜๊ธฐ :: (Simple Linked List sample code) ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๋…ธ๋“œ๊ฐ€ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ•˜๋‚˜์˜ ์ฐธ์กฐ๋งŒ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ง• ๋•๋ถ„์— ๊ตฌํ˜„ํ•˜๊ธฐ ๊ฐ„๋‹จํ•˜๋‹ค. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋…ธ๋“œ ์ƒ์„ฑ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋‹ˆ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ๊ตฌํ˜„ํ•ด๋ณด์ž. ์‚ฝ์ž… ์—ฐ์‚ฐ ์‚ฝ์ž… ์—ฐ์‚ฐ์€ ์ด ์„ธ ๊ฐ€์ง€๋กœ ํฌ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. Head์— ์‚ฝ์ž…ํ•˜๊ธฐ. Tail์— ์‚ฝ์ž…ํ•˜๊ธฐ. ํŠน์ • ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๊ธฐ. 1. Head์— ์‚ฝ์ž…ํ•˜๊ธฐ Head์— ์‚ฝ์ž…ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ์ƒˆ๋กœ์šด ๋…ธ๋“œ ์ƒ์„ฑ ์ƒˆ๋กœ์šด ๋…ธ๋“œ์˜ ๋‹ค์Œ ๋…ธ๋“œ(link ํ•„๋“œ)๋ฅผ ๊ธฐ์กด์— ์žˆ๋˜ head๋…ธ๋“œ๋กœ ์„ค์ • ํ—ค๋“œ ๋…ธ๋“œ์™€ ์ƒˆ๋กœ์šด ๋…ธ๋“œ์˜ ๊ตํ™˜. ํ…Œ์ผ ๋…ธ๋“œ๋ฅผ ๊ธฐ์กด์˜ ํ—ค๋“œ๋…ธ๋“œ๋กœ ์„ค์ •. 2. Tail์— ์‚ฝ์ž…ํ•˜๊ธฐ 3. ํŠน์ • ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๊ธฐ ํŠน์ • ์œ„์น˜์— ๋…ธ๋“œ๋ฅผ .. 2020. 6. 12.