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

BFS2

[์•Œ๊ณ ๋ฆฌ์ฆ˜] BFS/DFS (feat. stack, queue) ๊ผญ ํ•„์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๊ธฐ์ดˆ BFS/DFS๋ฅผ ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ, ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์–˜๊ธฐํ•ด๋ณด๊ณ  ๋„˜์–ด๊ฐ€์ž. Stack ๋ฐ•์Šค ์Œ“๊ธฐ์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค ์„ ์ž…ํ›„์ถœ, ํ›„์ž…์„ ์ถœ ํŒŒ์ด์ฌ์—์„œ ์Šคํƒ์„ ์ด์šฉํ•  ๋•Œ์—๋Š” ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ธฐ๋ณธ ๋ฆฌ์ŠคํŠธ์—์„œ append()์™€ pop() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋™์ผํ•˜๊ธฐ ๋™์ž‘ํ•œ๋‹ค. Queue ๋Œ€๊ธฐ์ค„์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ ํŒŒ์ด์ฌ์œผ๋กœ ํ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” collections ๋ชจ๋“ˆ์—์„œ ์ œ๊ณตํ•˜๋Š” deque ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์ž. deque๋Š” ์Šคํƒ๊ณผ ํ์˜ ์žฅ์ ์„ ๋ชจ๋‘ ์ฑ„ํƒํ•œ ๊ฒƒ์ธ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋นผ๋Š” ์†๋„๊ฐ€ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์— ๋น„ํ•ด ํšจ์œจ์ ์ด๋ฉฐ queue ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๊ฐ„๋‹จํ•˜๋‹ค. ํ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ push_bac.. 2023. 10. 11.
[Queue/Deque] ํ/๋ฑ - BFS ๋ฏธ๋กœ์ฐพ๊ธฐ BFS for Maze N × Mํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ํ‘œํ˜„๋˜๋Š” ๋ฏธ๋กœ๊ฐ€ ์žˆ๋‹ค. ๋ฏธ๋กœ์—์„œ 0์€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์„ ๋‚˜ํƒ€๋‚ด๊ณ , 1์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์นธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. S๋Š” ์ถœ๋ฐœ์ ์„ ์˜๋ฏธํ•˜๋ฉฐ T๋Š” ๋„์ฐฉ์ ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์กŒ์„๋•Œ BFS๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ถœ๋ฐœ์ ์—์„œ ๋„์ฐฉ์ ์œผ๋กœ ์ด๋™ํ•˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ์นธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ํ•œ ์นธ์—์„œ ๋‹ค๋ฅธ ์นธ์œผ๋กœ ์ด๋™ํ•  ๋•Œ, ์„œ๋กœ ์ธ์ ‘ํ•œ ์นธ์œผ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์นธ์˜ ์ˆ˜๋ฅผ ์…€ ๋•Œ๋Š” S์™€ T๋„ ํฌํ•จํ•œ๋‹ค. Input ์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ N, M (2 ≤ N, M ≤ 50)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ๋ฌธ์ž๋กœ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ๋ฌธ์ž๋“ค์€ ๋ถ™์–ด์„œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. Output ์ฒซ์งธ ์ค„์— BFS๋ฅผ ํ†ตํ•ด ์ง€๋‚˜์•ผ ํ•˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ์นธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋„์ฐฉ์ ์— ๋„.. 2023. 7. 9.