๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/์ž๋ฃŒ๊ตฌ์กฐ ์ด๋ก 16

์ž๋ฃŒ๊ตฌ์กฐ ๋ชฉ๋ก (+java์—์„œ์˜ ์‚ฌ์šฉ) ์ž๋ฃŒ๊ตฌ์กฐ์—๋Š” ํฌ๊ฒŒ ์„ ํ˜•์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ์•„๋ž˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์˜ ๊ฐ„๋žตํ•œ ์„ค๋ช…์ด๋‹ค.๊ฐ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ž์„ธํ•œ ์„ค๋ช…์€ ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ๋‹ค๋ฅธ๊ธ€์— ์„œ์ˆ  ๋˜์–ด์žˆ๋‹ค.  ๐Ÿ’ซ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ ๋ชจ์Œ1. ๋ฐฐ์—ด(Array)์„ค๋ช…: ๋™์ผํ•œ ํƒ€์ž…์˜ ์š”์†Œ๋“ค์ด ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.ํŠน์ง•: ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ, ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์Œ.์‚ฌ์šฉ ์˜ˆ: ์ •์ˆ˜ ๋ฐฐ์—ด, ๋ฌธ์ž ๋ฐฐ์—ด ๋“ฑ.2. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)์„ค๋ช…: ๊ฐ ์š”์†Œ๊ฐ€ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋˜๊ณ , ๊ฐ ๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.ํŠน์ง•: ๋™์  ํฌ๊ธฐ, ์š”์†Œ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•จ, ์ž„์˜ ์ ‘๊ทผ์ด ๋น„ํšจ์œจ์ .์‚ฌ์šฉ ์˜ˆ: ๋ฆฌ์ŠคํŠธ, ํ, ์Šคํƒ ๊ตฌํ˜„.3. ์Šคํƒ(Stack)์„ค๋ช…: ํ›„์ž…์„ ์ถœ(LIFO, Last In First Ou.. 2024. 6. 25.
ํž™(Heap) - ์ž๋ฃŒ๊ตฌ์กฐ ๐Ÿ‘ฉ‍๐Ÿ’ป Heap ์ด๋ž€?๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ตœ๋Œ€ ํž™(Max Heap), ์ตœ์†Œ ํž™(Min Heap)์ด ์žˆ๋‹ค. ์ตœ๋Œ€ ํž™์—์„œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , ์ตœ์†Œ ํž™์—์„œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.Heap์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree) ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ์ด์ง„ ํž™(Binary Heap)์€ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์ด๋‹ค.์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•˜์—ฌ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ ์ตœ๋Œ€๊ฐ’์ด๋‚˜ ์ตœ์†Œ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ํž™์€ ์ผ์ข…์˜ ๋ฐ˜ ์ •๋ ฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.(ํฐ ๊ฐ’์ด ์ƒ์œ„ ๋ ˆ๋ฒจ์— ์žˆ๊ฑฐ๋‚˜ ์ž‘์€ ๊ฐ’์ด ํ•˜์œ„ ๋ ˆ๋ฒจ์— ์žˆ๋‹ค. )๋˜ํ•œ ํž™ ํŠธ๋ฆฌ์—์„œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•œ๋‹ค. (์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—์„œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.) ์ฆ‰, ํž™์€ ์ตœ.. 2024. 6. 22.
ํŠธ๋ฆฌ(Tree) - ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๐Ÿ‘ฉ‍๐Ÿ’ป Tree๋ž€?๋…ธ๋“œ(NODE) + ์—์ง€(EDGE)๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. (ํด๋”๊ตฌ์กฐ-๋””๋ ‰ํ† ๋ฆฌ, ์กฐ์ง๋„, ๊ฐ€๊ณ„๋„ ๋“ฑ) โœ๏ธ ํŠธ๋ฆฌ์˜ ํŠน์ง•ํ•˜๋‚˜์˜ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ๋กœ๋Š” ์œ ์ผํ•˜๋‹ค.๋…ธ๋“œ๊ฐ€ N๊ฐœ์ธ ํŠธ๋ฆฌ์˜ ์—์ง€์ˆ˜๋Š” N-1๊ฐœ์ด๋‹ค.Acyclicํ•˜๋‹ค. (Cycle์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ)๋ชจ๋“  ๋…ธ๋“œ๋Š” ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.ํ•˜๋‚˜์˜ Edge๋ฅผ ๋Š์œผ๋ฉด 2๊ฐœ์˜ Sub-Tree๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค. โœ๏ธ ํŠธ๋ฆฌ์˜ ๊ตฌ์กฐ๋…ธ๋“œ(Node) : ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ์ž๋ฃŒ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋‹จ์œ„์—์ง€(Edge) : ๋…ธ๋“œ๊ฐ„์˜ ์—ฐ๊ฒฐ์„  (=link, branch)๋ฃจํŠธ๋…ธ๋“œ(Root) : ๋ถ€๋ชจ๊ฐ€ ์—†๋Š”, ์ตœ์ƒ๋‹จ ๋…ธ๋“œ์žŽ์ƒˆ๋…ธ๋“œ(Leaf) : ์ž์‹์ด ์—†๋Š”, ๋‹จ๋ง ๋…ธ๋“œ๋‚ด๋ถ€๋…ธ๋“œ(internal) : ์žŽ์ƒˆ๋…ธ๋“œ๋ฅผ .. 2024. 6. 22.
Linked List - ์ž๋ฃŒ๊ตฌ์กฐ ๐Ÿ‘ฉ‍๐Ÿ’ป Linked List ๋ž€?Linked List๋ž€ ์„ ํ˜•์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ Node(๋…ธ๋“œ)๋“ค์ด ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋กœ ๊ฐ ๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ฃผ์š” ํ˜•ํƒœ๋กœ๋Š” ๋‹จ์ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์ด์ค‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค.ํ•ด๋‹น ๋…ธ๋“œ๋“ค์€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋Š” ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ, ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. * ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. ํŠนํžˆ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ด๋‚˜ ๋ ๋ถ€๋ถ„์—์„œ์˜ ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ํšจ์œจ์ ์ด๋‹ค. โœ๏ธ ์‹œ๊ฐ„ ๋ณต์žก๋„์‚ฝ์ž… ์‚ญ์ œ์‹œ : O(1) ใ„ด ๋”ฐ๋ผ์„œ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ ์ƒํ™ฉ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.์ค‘๊ฐ„์—์„œ์˜ ๊ฒ€์ƒ‰ : O(n)  โœ๏ธ ์—ฌ๋Ÿฌ๊ฐ€์ง€ Linked List 1. ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Singly Linked List)๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ ๋…ธ๋“œ๋Š” ๋‹ค.. 2024. 6. 21.
HashMap - ์ž๋ฃŒ๊ตฌ์กฐ ๋ชฉ์ฐจ 1. HashMap์ด๋ž€?2. ํ•ด์‹ฑ3. ๋ฒ„ํ‚ท4. ์ถฉ๋Œ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•  4-1) ์ฒด์ด๋‹  4-2) ์˜คํ”ˆ ์–ด๋“œ๋ ˆ์‹ฑ     4-2-1) ์„ ํ˜•ํƒ์‚ฌ     4-2-2) ์ด์ฐจํƒ์‚ฌ     4-2-3) ์ด์ค‘ํ•ด์‹ฑ5. HashMap์˜ ์ฃผ์š” ๋ฉ”์†Œ๋“œ6. ์„ฑ๋Šฅ ํŠน์„ฑ (์‹œ๊ฐ„๋ณต์žก๋„ / ๊ณต๊ฐ„๋ณต์žก๋„)7. HashMap VS HashTable8. ๋ฌธ์ œํ’€์ด ๐Ÿ‘ฉ‍๐Ÿ’ป HashMap ์ด๋ž€? HashMap ์€ Key์™€ Value๊ฐ€ ์Œ์„ ์ด๋ค„ ์ €์žฅ๋˜๋Š” ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.๊ฐ key๋Š” ๊ณ ์œ ํ•˜์—ฌ ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹นํ•˜๋Š” Value์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. โœ๏ธ ํ•ด์‹ฑ (Hashing)* Hash Map์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ์›๋ฆฌ๋กœ ํ‚ค๋ฅผ ํŠน์ • ๊ณ„์‚ฐ์‹์— ๋„ฃ์–ด ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์— ์ ‘๊ทผํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.(ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค๋ฅผ ํ•ด.. 2024. 6. 20.
Array(๋ฐฐ์—ด) - (์„ ํ˜•)์ž๋ฃŒ๊ตฌ์กฐ Array (๋ฐฐ์—ด)์€ ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋‚˜์—ดํ•œ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. โœ๏ธ Array์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์ธ๋ฑ์Šค๋ฅผ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1)ใ„ด ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์œ„์น˜์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.์‚ฝ์ž… ์‚ญ์ œ์‹œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(n) ใ„ด ์‚ฝ์ž…, ์‚ญ์ œ์‹œ ํ•ด๋‹น ์œ„์น˜ ์ดํ›„์˜ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ์ด๋™์‹œ์ผœ์•ผํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ข‹์ง„ ์•Š๋‹ค.  โœ๏ธ Array์˜ ์žฅ์ ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋ฏ€๋กœ ์ ‘๊ทผ(๊ฒ€์ƒ‰)์ด ๋น ๋ฅด๋‹ค.์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.๋˜ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ์ธ์ ‘ํ•œ ์š”์†Œ๋“ค์— ๋Œ€ํ•œ ์บ์‹œ ์ง€์—ญ์„ฑ์ด ์ข‹์•„ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ฐธ์กฐ๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. ๋‹ค.. 2024. 6. 19.