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

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

ํŠธ๋ผ์ด (Trie) - ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๐Ÿ‘ฉ‍๐Ÿ’ป  ํŠธ๋ผ์ด (Trie)๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ ฌ๋œ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฌธ์ž์—ด ์ €์žฅ์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ํƒ์ƒ‰์ด ๋น ๋ฆ„ *** โœ๏ธ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ฐ ์ƒ์„ฑ ๋ณต์žก๋„๊ธธ์ด๊ฐ€ N์ธ ๋ฌธ์ž์—ด ํƒ์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ :O(N)์ƒ์„ฑ ๋ณต์žก๋„ : O(MN) (M: ๋ฌธ์ž์—ด ๊ฐœ์ˆ˜) โœ๏ธ ํŠธ๋ผ์ด ํ˜•ํƒœ๋ฌธ์ž์—ด ๊ตฌ์„ฑ ex) apple, april, ace, bear, best โœ๏ธ ํŠธ๋ผ์ด์˜ ์‚ฝ์ž…์•ž์„œ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ์žˆ๋Š” ๋ถ€๋ถ„์€ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€์„œ ์—†๋Š” ๋ถ€๋ถ„๋ถ€ํ„ฐ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑ, ๋ฌธ์ž์˜ ๋ ๋…ธ๋“œ๋Š” ๋”ฐ๋กœ ํ‘œ๊ธฐ๋ฅผ ํ•ด๋‘”๋‹ค. โœ๏ธ ํŠธ๋ผ์ด์˜ ์‚ญ์ œ๋ฌธ์ž๋ฅผ ๋”ฐ๋ผ๊ฐ€์„œ ๋์ชฝ์— ๋‹ค๋‹ค๋ฅด๋ฉด, ( apple์—์„œ์˜ e, app์—์„œ์˜ p ) ํ•ด๋‹น ์น ํ•ด์ ธ์žˆ๋Š” ๋…ธ๋“œ์˜ (๋ฌธ์ž์—ด ๋ ๋…ธ๋“œ์˜) ์ž์‹๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ƒ‰์น ํ•œ ๊ฒƒ์„ ์—†์•ค ํ›„ ์œ„๋กœ ์ด๋™, ๊ทธ.. 2024. 7. 17.
์šฐ์„ ์ˆœ์œ„ ํ (Priority Queue) - ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๐Ÿ‘ฉ‍๐Ÿ’ป  ์šฐ์„ ์ˆœ์œ„ ํ - Priority QueueQueue์ง€๋งŒ, FIFO๊ฐ€ ์•„๋‹ˆ๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ €๋‚˜์˜จ๋‹ค.๋˜ํ•œ ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ํ•ญ์ƒ ๋งŒ์กฑํ•œ๋‹ค.๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ๋‹ค.Dequeue์‹œ, "์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ"์œผ๋กœ ๋‚˜๊ฐ„๋‹ค.์šฐ์„  ์ˆœ์œ„๊ฐ€ "๊ฐ™์€" ๊ฒฝ์šฐ๋Š” FIFO๋กœ ๋‚˜์˜จ๋‹ค. โœ๏ธ  enqueue, dequeue (์‚ฝ์ž…, ์‚ญ์ œ)์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ Heap ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„์‹œ์—๋Š”enqueue, dequeue๊ฐ€ ์ตœ์†Œ ํž™ ๋ฐ ์ตœ๋Œ€ ํž™์˜ ์‚ฝ์ž… ์‚ญ์ œ์™€ ๊ฐ™๋‹ค! โœ๏ธ  ์šฐ์„ ์ˆœ์œ„ ํ์˜ ๊ตฌํ˜„๋ฐฐ์—ด์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธํž™ : ์ผ๋ฐ˜์ ์œผ๋กœ ํž™์„ ์ด์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. (์ž๋ฐ”์˜ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋„ ํž™์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ)์ผ๋ฐ˜์ ์œผ๋กœ Heap์„ ์ด์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ์—๋Š” ์‹œ๊ฐ„๋ณต์žก๋„.. 2024. 7. 17.
๊ทธ๋ž˜ํ”„ - ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ๐Ÿ‘ฉ‍๐Ÿ’ป  ๊ทธ๋ž˜ํ”„ (Graph)์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ (Cyclic)์—ฐ๊ฒฐ๋œ ์ •์ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐํŠธ๋ฆฌ์™€ ๋‹ค๋ฅธ์ ์€ ํŠธ๋ฆฌ๋Š” an cyclic ์ด๋ผ๋ฉด ๊ทธ๋ž˜ํ”„๋Š” cyclic์ด๋‹ค. ***๊ฐ„์„ ๋ผ๋ฆฌ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.  ๊ทธ๋ž˜ํ”„์˜ ์šฉ๋„ : ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„, ํ†ต์‹  ๋„คํŠธ์›Œํฌ, ... โœ๏ธ  ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ์ •์ (Vertex) : ๊ฐ ๋…ธ๋“œ๊ฐ„์„ (Edge) : ๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„  (Link, branch)์ธ์ ‘ ์ •์ ‘ (Adjacent vertex) : ๊ฐ„์„  ํ•˜๋‚˜๋ฅผ ๋‘๊ณ  ๋ฐ”๋กœ ์—ฐ๊ฒฐ๋œ ์ •์ ์ •์ ์˜ ์ฐจ์ˆ˜ (Degree):๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ํ•˜๋‚˜์˜ ์ •์ ์— ์ธ์ ‘ํ•œ ์ •์ ์˜ ์ˆ˜๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๋ชจ๋“  ์ •์  ์ฐจ์ˆ˜์˜ ํ•ฉ = ๊ทธ๋ž˜ํ”„ ๊ฐ„์„ ์˜ ์ˆ˜ 2๋ฐฐ์ง„์ž… ์ฐจ์ˆ˜ (In-degree): ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€์—์„œ ์˜ค๋Š” ๊ฐ„์„ ์˜.. 2024. 7. 16.
๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ (by ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ) ๐Ÿ‘ฉ‍๐Ÿ’ป  ๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ๋ž€?๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ๋ž€? ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ขŒ์šฐ ์„œ๋ธŒ ํŠธ๋ฆฌ ๋†’์ด๊ฐ€ 1์ด์ƒ ์ฐจ์ด ๋‚˜์ง€ ์•Š๋Š” ํŠธ๋ฆฌ์ด๋‹ค.  โœ๏ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํŽธํ–ฅ ๋ฐœ์ƒ๊ฒฝ์šฐ 1) ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— ์‚ฝ์ž… ๋˜๋Š” ์ˆœ์„œ : 20 -> 10 -> 30 -> 5 ์ธ ๊ฒฝ์šฐ์—๋Š” ๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ๋œ๋‹ค.๊ฒฝ์šฐ 2) ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— ์‚ฝ์ž… ๋˜๋Š” ์ˆœ์„œ : 5 -> 10 -> 20 -> 30 ์ธ ๊ฒฝ์šฐ์—๋Š” ์‚ฌํ–ฅ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ๋œ๋‹ค. โœ๏ธ Balanced Binary Search Tree๋…ธ๋“œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚  ๋•Œ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋„๋ก ํ•˜๋Š” ํŠธ๋ฆฌ ์ข…๋ฅ˜ :AVLํŠธ๋ฆฌ Red-Black ํŠธ๋ฆฌ โœจ AVL ํŠธ๋ฆฌ๋…ธ๋“œ๊ฐ€ ์‚ฝ์ž…, ์‚ญ์ œ ๋  ๋•Œ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์ฒดํฌํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ํŠธ๋ฆฌ๊ฐ ๋…ธ๋“œ์˜ BF๋ฅผ [-1, 0, 1] ๋งŒ ๊ฐ€์ง€๊ฒŒ ํ•˜์—ฌ ๊ท ํ˜•์„ ์œ ์ง€BF[Balance .. 2024. 7. 12.
์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (Binary search tree) BST - ์ž๋ฃŒ๊ตฌ์กฐ ๐Ÿ‘ฉ‍๐Ÿ’ป Binary search ree๋ž€?์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ์•„๋ž˜์˜ ๊ทœ์น™์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค.์™ผ์ซ€ ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๋ณด๋‹ค ์ž‘์Œ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค๋ณด๋‹ค ํผ๊ฐ๊ฐ์˜ ์„œ๋ธŒ ํŠธ๋ฆฌ๋„ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ฅผ ์œ ์ง€์ค‘๋ณต๋œ ํ‚ค๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œโœ๏ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ํŠน์ง•์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ทœ์น™์— ์˜ํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋จ์ด์ง„ ํŠธ๋ฆฌ์— ๋น„ํ•ด ํƒ์ƒ‰์ด ๋น ๋ฆ„ (๊ท ํ˜• ์œ ์ง€ ํ•„์š”)๊ท ํ˜• ์ƒํƒœ : O(logN)๋ถˆ๊ท ํ˜• ์ƒํƒœ : O(N)โœ๏ธ ํƒ์ƒ‰์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ๋น„๊ต ์‹œ์ž‘๋Œ€์†Œ ๋น„๊ต๋ฅผ ํ•˜์—ฌ ์ฐพ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž‘์œผ๋ฉด ์™ผ์ชฝ, ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋กœ ์ด๋™์ฐพ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด null ๋ฐ˜ํ™˜์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋”๋ผ๋„ ์ตœ๋Œ€ ํŠธ๋ฆฌ ๋†’์ด ๋งŒํผ์˜ ํƒ์ƒ‰์ด ์ด๋ฃจ์–ด์ง โœ๏ธ ์‚ฝ์ž…Root ๋ถ€ํ„ฐ ๋น„๊ต ์‹œ์ž‘ (์ค‘๋ณต ํ‚ค ๋ฐœ๊ฒฌ ์‹œ ๋…ธ๋“œ๋ฅผ ์ถ”.. 2024. 7. 3.
java - ๋น„ํŠธ ์—ฐ์‚ฐ์ž (1L ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด, ์ด ์—ฐ์‚ฐ์€ ์ˆซ์ž 1์„ ์™ผ์ชฝ์œผ๋กœ i๋น„ํŠธ๋งŒํผ ์ด๋™์‹œ์ผœ์„œ 2์˜ i์ œ๊ณฑ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.1L 20=12^0 = 120=1).1L 21=22^1 = 221=2).1L 22=42^2 = 422=4).1L 23=82^3 = 823=8).์—ฌ๊ธฐ์„œ 1L์€ long ํƒ€์ž…์˜ ์ˆซ์ž 1์„ ์˜๋ฏธํ•˜๋ฉฐ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•  ๋•Œ, ํŠนํžˆ ํฐ ์ˆซ์ž์™€ ์ž‘์—…ํ•  ๋•Œ int ๋Œ€์‹  long์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•˜๋‹ค. ์ฆ‰, (1L 2^i๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด๋ฉฐ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณฑ์…ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์ด ๊ณ„์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. โœจ๋น„ํŠธ์—ฐ์‚ฐ๋“ค์˜ ์ข…๋ฅ˜๋น„ํŠธ ์—ฐ์‚ฐ์€ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๊ณ„์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ์–ด์„œ, ํŠนํžˆ ํฐ ๋ฐ์ดํ„ฐ์…‹์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.์•„๋ž˜๋Š” .. 2024. 6. 26.