๐Ÿ‘ฉโ€๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ/โœจ ์ž๋ฃŒ๊ตฌ์กฐ

๐ŸŸฉ FIFO (First In First Out) ๐ŸŸฉ BFS (๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰) ์—์„œ ํ™œ์šฉ ํƒ์ƒ‰ ํ›„๋ณด ์ค‘์—์„œ ํ•ญ์ƒ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๊ฒƒ์„ ์„ ํƒ ๐ŸŸฉ ํ—ค๋” ์ถ”๊ฐ€ ๐ŸŸฉ ์ฃผ์š” ๋™์ž‘ enqueue : ์‚ฝ์ž… dequeue : ์ถ”์ถœ peek : ์ถ”์ถœํ•  ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ์Œ ๐ŸŸฉ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€/์‚ญ์ œ ๋ฐฉํ–ฅ์ด ๋ฐ˜๋Œ€ 1 : ์‚ฝ์ž… ์—ฐ์‚ฐ๋งŒ ๋ฐœ์ƒ (๊ฐ€์žฅ ์œ„์— ์ถ”๊ฐ€๋จ) 2 : ์‚ญ์ œ ์—ฐ์‚ฐ๋งŒ ๋ฐœ์ƒ ๐ŸŸฉ ์ค‘๊ฐ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ๋ถˆ๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ dequeue ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ๊ธฐ๋Šฅ q.size() q์˜ ์‚ฌ์ด์ฆˆ(๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ์šฉ๋Ÿ‰์ด ์•„๋‹Œ ์›์†Œ์˜ ๊ฐœ์ˆ˜)๋ฅผ ๋ฆฌํ„ด q.empty() q์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ 0์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธ q.front() q์— ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด๊ฐ„ ์›์†Œ๋ฅผ ๋ฆฌํ„ด q.back() q์— ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ์›์†Œ๋ฅผ ๋ฆฌํ„ด q.push(val)..
๋ฐ์ดํ„ฐ๋ฅผ 1์—ด๋กœ ๋‚˜์—ด ๐ŸŸฉ ์ ‘๊ทผ ์–ด๋ ค์›€ ํฉ์–ด์ ธ์„œ ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€์•ผ๋งŒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ ๐ŸŸฉ ์ถ”๊ฐ€, ์‚ญ์ œ ์šฉ์ด ์ถ”๊ฐ€์‹œ ์ถ”๊ฐ€ํ•  ์œ„์น˜์˜ ์•ž๋’ค ํฌ์ธํ„ฐ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค. ์‚ญ์ œ๋„ ๋™์ผ cf. ์‚ญ์ œ์‹œ, ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์ง€๋งŒ ์–ด๋””์—๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ผ๋ถ€๋Ÿฌ ์‚ญ์ œํ•  ํ•„์š”์—†๋‹ค. ์ดํ›„์— ์ด ์˜์—ญ์ด ๋‹ค์‹œ ์‚ฌ์šฉ๋  ๋•Œ ๋ฎ์–ด์“ฐ์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๐ŸŸฉ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ์—ฐ์†๋œ ์œ„์น˜์— ์ €์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์ˆœ์„œ์™€ ๊ด€๋ จ์—†์Œ ์—ฐ๊ฒฐ ์ •๋ณด์˜ ๋…ผ๋ฆฌ์  ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๐ŸŒŸ head ์‹œ์ž‘์ , ์„ ํ˜• ๊ตฌ์กฐ์—์„œ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์šฉ์–ด ๋…ธ๋“œ(node) = data + pointer ์ „์ฒด ๋ฆฌ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€/์‚ญ์ œ์‹œ ๊ธฐ์ค€์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๐ŸŸฉ ๊ณ„์‚ฐ์‹œ๊ฐ„ ๊ฒ€์ƒ‰ O(n) ์ถ”..
๋ฐ์ดํ„ฐ๋ฅผ 1์—ด๋กœ ๋‚˜์—ดํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๊ฐ™์€ ์ž๋ฃŒํ˜•, ๊ฐ™์€ ํฌ๊ธฐ์˜ ๊ธฐ์–ต ๊ณต๊ฐ„ ๐ŸŒŸ ๋ฐฐ์—ด์˜ ์„ ๋‘๋Š” ์™œ 0๋ฒˆ์ธ๊ฐ€? ๋”๋ณด๊ธฐ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์—์„œ ์–ผ๋งˆ๋‚˜ ๋–จ์–ด์ ธ ์žˆ๋Š”๊ฐ€๋ฅผ ํ†ตํ•ด ์ •ํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” 0๋งŒํผ ๋–จ์–ด์ ธ ์žˆ์œผ๋ฏ€๋กœ a[0]์ด๋‹ค. ๐ŸŸฉ ์ ‘๊ทผ(๊ฒ€์ƒ‰) ์šฉ์ด ์—ฐ์†๋œ ์˜์—ญ์— ์ €์žฅ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณ„์‚ฐ ๊ฐ€๋Šฅ ๊ฐ ๋ฐ์ดํ„ฐ์— ๋ฐ”๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ ๐ŸŸฉ ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ์–ด๋ ค์›€ 1. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€์‹œ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋กœ ๊ณต๊ฐ„ ํ™•๋ณด 2. ๊ณต๊ฐ„์ด ๋น„๋ฏ€๋กœ ์•ž์œผ๋กœ ํ•˜๋‚˜์”ฉ ์˜ฎ๊ธด๋‹ค. 3. ์›ํ•˜๋Š” ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ cf. ์‚ญ์ œ ์‹œ์—๋Š” ์‚ญ์ œ ํ›„ ๋นˆ๊ณต๊ฐ„์— ๋งž์ถฐ ํ•˜๋‚˜์”ฉ ๋งค๊พธ๊ธฐ ๐ŸŸฉ ๋กœ ๊ตฌ์„ฑ index : ์ปดํ“จํ„ฐ ๊ตฌ์กฐ, ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ •์˜๋œ๋‹ค. ๐ŸŸฉ ์›์†Œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๋ฌผ๋ฆฌ์ ์ธ ์œ„์น˜๋ฅผ '์ˆœ์„œ'์ ์œผ๋กœ ๊ฒฐ์ • ๋ฐฐ์—ด์˜ ์ˆœ์„œ : ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ์ €..
์ด์ง„ ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ™œ ๋•Œ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๊ณ  ์ง€๋‚˜์ณ ์˜จ ๋…ธ๋“œ๋“ค์€ ์Šคํƒ์— ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ๋ฐœ์ƒํ•จ ์Šค๋ ˆ๋“œ ํŠธ๋ฆฌ : '์Šค๋ ˆ๋“œ'๋ผ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠธ๋ฆฌ ์ˆœํšŒ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ '์Šค๋ ˆ๋“œ' : ์ˆœํšŒ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ฅธ ๋ฐฉ๋ฌธ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ํฌ์ธํ„ฐ ์Šค๋ ˆ๋“œ ํŠธ๋ฆฌ ๊ตฌํ˜„๋ฐฉ๋ฒ• 1. ํฌ์ธํ„ฐ ํ•„๋“œ์˜ ์ถ”๊ฐ€ : ์Šค๋ ˆ๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ -> ์™ผ์ชฝ ์Šค๋ ˆ๋“œ ํฌ์ธํ„ฐ, ์™ผ์ชฝ ์ž์‹ ํฌ์ธํ„ฐ, ๋ฐ์ดํ„ฐ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ํฌ์ธํ„ฐ, ์˜ค๋ฅธ์ชฝ ์Šค๋ ˆ๋“œ ํฌ์ธํ„ฐ ํ•„๋“œ๋กœ ๋…ธ๋“œ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•จ ์˜ค๋ฅธ์ชฝ ์Šค๋ ˆ๋“œ : ์ •ํ•ด์ง„ ์ˆœํšŒ ์ˆœ์„œ์— ๋”ฐ๋ฅธ ๊ทธ ๋…ธ๋“œ์˜ ํ›„์† ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์™ผ์ชฝ ์Šค๋ ˆ๋“œ : ๊ทธ ๋…ธ๋“œ์˜ ์„ ํ–‰ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด ์ถ”๊ฐ€๋œ ํฌ์ธํ„ฐ ํ•„๋“œ์— ์˜ํ•œ ์Šค๋ ˆ๋“œ ๊ตฌํ˜„ - ์Šคํƒ์„ ์šด์˜ํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ํŠธ๋ฆฌ์— ์†ํ•œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒ ๊ฐ€๋Šฅ - ํ•˜์ง€๋งŒ ์Šค๋ ˆ๋“œ..
๋ชจ๋“  ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ 2 ์ดํ•˜์ธ ํŠธ๋ฆฌ ์ˆ˜ํ•™์ ์œผ๋กœ, ์ด์ง„ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ์— ๊ด€ํ•œ ์ด๋ก ์„ ์ •๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ณ , ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ๋„ ํšจ์œจ์ ์ž„ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ดํ•˜์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ, ์ผ๋ฐ˜์„ฑ์„ ์žƒ์ง€ ์•Š๊ณ  '์˜ค๋ฅธ์ชฝ', '์™ผ์ชฝ'์ด๋ผ๋Š” ๋ฐฉํ–ฅ ๊ฐœ๋…์„ ๋ถ€์—ฌ ๊ฐ€๋Šฅ ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ, ์™ผ์ชฝ ๋…ธ๋“œ์˜ ๊ฐœ๋…์  ์ ‘๊ทผ๋„ ์žˆ์Œ ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๊ฐ ๋ ˆ๋ฒจ์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ๊ฐœ์ˆ˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ๋†’์ด๊ฐ€ k์ธ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ '0๋ ˆ๋ฒจ'๋ถ€ํ„ฐ 'k-2 ๋ ˆ๋ฒจ'๊นŒ์ง€ ๋‹ค ์ฑ„์šฐ๊ณ , ๋งˆ์ง€๋ง‰ 'k-1 ๋ ˆ๋ฒจ'์—์„œ ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋…ธ๋“œ๋“ค์ด ์ฐจ๋ก€๋กœ ์ฑ„์›Œ์ง„ ์ด์ง„ํŠธ๋ฆฌ ์ด์ง„ํŠธ๋ฆฌ ๊ตฌํ˜„ 1. ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ๊ตฌํ˜„ - ํŠธ๋ฆฌ๊ฐ€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ๋˜๋Š” ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ์ธ ๊ฒฝ์šฐ ๋‚ญ๋น„๋˜๋Š” ๊ณต๊ฐ„์ด ์—†์–ด ํšจ์œจ์  ํŠธ๋ฆฌ๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก ๊ธฐ์–ต์žฅ์†Œ ๋‚ญ๋น„๊ฐ€ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ..