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

ํ4

[Queue/Deque] ํ/๋ฑ - ํ† ์ด ํŽธ์ง‘๊ธฐ Undo Redo ํ† ์ด ํŽธ์ง‘๊ธฐ Undo Redo ํ† ์ด ํŽธ์ง‘๊ธฐ์— ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š”๋ฐ ์‹คํ–‰์ทจ์†Œ(Undo)๊ธฐ๋Šฅ๊ณผ ๋‹ค์‹œ์‹คํ–‰(Redo)๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์‹คํ–‰์ทจ์†Œ(Undo) ๊ธฐ๋Šฅ์€ ์ œ์ผ ์ตœ๊ทผ์— ์ž‘์—…(Last In)ํ•œ ๊ฒƒ์„ ์ทจ์†Œ์‹œํ‚ค๋Š” ๊ฒƒ(First Out)์ด๋‹ค. ์‹คํ–‰์ทจ์†Œ๋ฅผ ๋ฌด์ž‘์ • ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์–ด์„œ ์ €์žฅ ๊ณต๊ฐ„์„ N๊ฐœ๋กœ ์ œํ•œํ•œ๋‹ค. ์ฆ‰, N+1๋ฒˆ์งธ ์‹คํ–‰์ทจ์†Œ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ์ œ์ผ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋„๋ก ํ•œ๋‹ค. ์ฆ‰, ๊ฐ€์žฅ ์˜ค๋žซ์ „์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์—†์• ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฐ‘ ๋น ์ง„ ์Šคํƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์Šคํƒ์˜ ๋ฐ‘๊ณผ ์œ„๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ•œ ์นธ์€ ๋น„์›Œ๋‘”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ €์žฅ ๊ณต๊ฐ„์ด 11์ธ ๊ฒฝ์šฐ(N=11), ๋ฌธ์ž๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ 10๊ฐœ a b c d e f g h i j ์ž…๋ ฅ๋œ ์ƒํƒœ์—์„œ ๋ฌธ์ž k๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด a๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  k๊ฐ€ ์ €์žฅ๋œ๋‹ค. ๋˜.. 2023. 7. 9.
[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.
[Queue/Deque] ํ/๋ฑ - ์ •๋ ฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ ํ”„๋กœ๊ทธ๋žจ ์ •๋ ฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ ํ”„๋กœ๊ทธ๋žจ ์ž…๋ ฅํ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ •์ˆ˜ํ˜• ์ˆซ์ž๋“ค์„ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ถœ๋ ฅํ์— ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€๋ฅผ ํ™•์ธํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค. ์ด๋•Œ ํ์™€ ์Šคํƒ์€ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ž…๋ ฅํ: dequeue ์ถœ๋ ฅํ: enqueue ์Šคํƒ: push and pop ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž…๋ ฅํ์— ์›์†Œ 1 2 3 4 5๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, ์Šคํƒ์— ๋ชจ๋“  ์›์†Œ๋“ค ์ฐจ๋ก€๋Œ€๋กœ ์ง‘์–ด๋„ฃ๊ณ , ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์–ด ์ถœ๋ ฅํ์— ์ž…๋ ฅํ•˜๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅํ์—์„œ ๋‚˜์˜จ ์ˆซ์ž๋Š” ๋ฐ”๋กœ ์ถœ๋ ฅํ๋กœ ๊ฐ€๋„ ๋˜๊ณ  ์Šคํƒ์„ ๊ฑฐ์ณค๋‹ค๊ฐ€ ์ถœ๋ ฅํ๋กœ ๊ฐ€๋„ ๋œ๋‹ค. ํ—ˆ์šฉ๋˜๋Š” ์—ฐ์‚ฐ๋งŒ์„ ์‚ฌ์šฉํ–ˆ์„๋•Œ ์ตœ์ข…์ ์œผ๋กœ ์ถœ๋ ฅํ์— ์ •๋ ฌ๋œ ์ˆซ์ž๋ฅผ ๋ฐฐ์น˜ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ํŒ๋‹จํ•œ๋‹ค. Input .. 2023. 7. 9.
[Queue/Deque] ํ/๋ฑ - ๋ฏธํŒ… ์ฃผ์„  ํ”„๋กœ๊ทธ๋žจ ๋ฏธํŒ… ์ฃผ์„  ํ”„๋กœ๊ทธ๋žจ ๊ฐ„๋‹จํ•œ ๋ฏธํŒ… ์ฃผ์„  ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค. ๋ฑ (deque)์„ ์ด์šฉํ•˜์—ฌ ๋‚จ์„ฑ ํ์™€ ์—ฌ์„ฑ ํ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค (์—ฌ๊ธฐ์„œ ๋ฑ์€ ๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค). ๋งค ์‹œ๊ฐ„ ํ•œ๋ช…์˜ ๊ณ ๊ฐ์ด ๋ฏธํŒ… ์ฃผ์„ ์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๋ฌธํ•˜๋ฉด ์„ฑ๋ณ„์— ๋งž์ถ”์–ด ํ์˜ ๋งจ ๋’ค์— ์‚ฝ์ž…ํ•œ๋‹ค. ๋งŒ์•ฝ์— ํ•ด๋‹น ๊ณ ๊ฐ์ด ๋ˆ์„ ๋” ๋‚ด์„œ๋ผ๋„ ์ˆœ์„œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ๋ฏธํŒ…์ด ์ฃผ์„ ๋˜๊ธธ ์›ํ•˜๋ฉด ํ์˜ ๋งจ ์ฒ˜์Œ์— ์‚ฝ์ž…ํ•œ๋‹ค. ๋งค ์‹œ๊ฐ„ ๊ณ ๊ฐ์ด ๋Œ€๊ธฐ์—ด์— ์ž…์žฅํ•˜๊ณ  ๋‚˜๋ฉด, ๋‚จ์„ฑ ํ์™€ ์—ฌ์„ฑ ํ์—์„œ ๋งจ ์•ž์— ์žˆ๋Š” ๋‚จ์„ฑ๊ณผ ์—ฌ์„ฑ์˜ ๋ฏธํŒ…์ด ๋งค์นญ๋œ๋‹ค. ๋งŒ์•ฝ ๋งค์นญํ•  ๋‚จ์„ฑ ๋˜๋Š” ์—ฌ์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์‹œ๊ฐ„์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. Input ์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ๋ฏธํŒ… ์ฃผ์„ ์†Œ์— ์ž…์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ์ด ์ธ์›์˜ ์ˆ˜ n (1 n; // string s; int id; string name; ch.. 2023. 7. 9.