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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ126

์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜(๋‹ค์ต์ŠคํŠธ๋ผ, ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ) ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ฐ ์ง€์ ์€ ๊ทธ๋ž˜ํ”„์—์„œ ๋…ธ๋“œ๋กœ ํ‘œํ˜„์ง€์  ๊ฐ„ ์—ฐ๊ฒฐ๋œ ๋„๋กœ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„๋‹ค์–‘ํ•œ ๋ฌธ์ œ ์ƒํ™ฉํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ํ•œ ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ → BFS ์ด์šฉํ•œ ์ง€์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ → ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ชจ๋“  ์ง€์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ → ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘ ๊ณผ์ •์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ”์€ ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํ˜„์žฌ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ๊ฐ€์ง„๋‹ค.์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ๋” ์งง์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์œผ๋ฉด ๋” ์งง์€ ๊ฒฝ๋กœ๋กœ ๊ฐ’์„ ๊ฐฑ์‹  ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ํŠน์ •ํ•œ ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•ด์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ณ„์‚ฐ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์Œ์˜ ๊ฐ„์„ ์ด ์—†์„ ๋•Œ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘- ํ˜„์‹ค ์„ธ๊ณ„์˜ ๊ฐ„์„ ์€ ์Œ์˜ ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„X- ์Œ์˜ ๊ฐ„์„ ์ด ํฌํ•จ๋  ๋•Œ๋Š” .. 2026. 4. 5.
๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜, BFS(Breadth First Search) BFS(๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰)๊ทธ๋ž˜ํ”„ ํ˜น์€ ํŠธ๋ฆฌ์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์™„์ „ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜(๋ชจ๋“  ๊ฐ„์„ ์˜ ๊ธธ์ด๊ฐ€ ๋™์ผํ•  ๋•Œ) ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํƒ์ƒ‰์ด๋ž€ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์„ ์˜๋ฏธ๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜ํ ์ž๋ฃŒ ๊ตฌ์กฐ ์ด์šฉ(DFS-์Šคํƒ, BFS-ํ) ํ ๊ตฌํ˜„class Queue { constructor() { this.queue = {}; this.headIndex = 0; this.tailIndex = 0; } enqueue = (value) => { this.queue[this.tailIndex++] = val.. 2026. 4. 4.
๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜, DFS(Depth-First Search) DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)ํŠน์ • ๋ฐฉํ–ฅ์œผ๋กœ ์ตœ๋Œ€ํ•œ ๊นŠ์ด ๋“ค์–ด๊ฐ€์„œ ๋น ์ ธ๋‚˜์˜ค๋Š” ๋ฐฉ์‹DFS๋Š” ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ ์‚ฌ์šฉ์Šคํƒ(Stack): ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์ค‘์— ๋‚˜๊ฐ€๋Š” ํ˜•์‹ → FILODFS๋Š” 2์ฐจ์› ๋ฐฐ์—ด(๋ฆฌ์ŠคํŠธ)๋กœ ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„๊ทธ๋ž˜ํ”„ ํ˜น์€ ํŠธ๋ฆฌ์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ, ์™„์ „ํƒ์ƒ‰ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ํ‘œํ˜„ ๋ฐฉ์‹0 12, 321, 531, 4, 543, 552, 3, 4 ๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์‹์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  [๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ]์Šคํƒ์— ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ค์–ด์˜จ ๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ• ์žˆ๋‹ค๋ฉด, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ์ ‘ ๋…ธ๋“œ๋ฅผ ์Šคํƒ์— ์‚ฝ์ž…ํ•˜๊ณ  [๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ]• ์—†๋‹ค๋ฉด, ํ˜„์žฌ ๋…ธ๋“œ(์Šคํƒ์— ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ค์–ด์˜จ ๋…ธ๋“œ)๋ฅผ ์Šคํƒ์—์„œ ์ถ”์ถœ2๋ฒˆ ๊ณผ์ •์„ .. 2026. 4. 4.
๋ฐฑํŠธ๋ž˜ํ‚น ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ณ ๋ คํ•  ๋•Œ ์‚ฌ์šฉ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„/ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์™„์ „ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉDFS์™€์˜ ์ฐจ์ด์ DFS๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์™„์ „ ํƒ์ƒ‰ ๋ชฉ์ ์œผ๋กœ, ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„๋ฐฑํŠธ๋ž˜ํ‚น๋„ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด์ง€๋งŒ, ๋‹จ์ˆœํžˆ ์™„์ „ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์œ ๋งํ•œ ๋…ธ๋“œ๋กœ ์ด๋™๊ทธ๋ž˜ํ”„ ํ‘œํ˜„ ๋ฐฉ์‹(2๊ฐ€์ง€)1. ์ธ์ ‘ํ–‰๋ ฌ0100101101010110 2. ์ธ์ ‘๋ฆฌ์ŠคํŠธ0 1221, 3, 432, 442, 3 ๋ฐฑํŠธ๋ž˜ํ‚น ๊ธฐ๋ณธ ํ˜•ํƒœfunction recursive() { if ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด { ์ฒ˜๋ฆฌ; } for ์ž์‹ ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ { if ์ž„์˜์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด { ์ž์‹ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ; ์žฌ๊ท€ ํ•จ์ˆ˜ ํ˜ธ์ถœ; .. 2026. 4. 4.