2022.03.24(๋ชฉ)
ํ
ํด์ ํ ์ด๋ธ
๊ทธ๋ํ
FIFO - ๋จผ์ ์จ ์ฌ๋ ๋จผ์ ๋ค์ด๊ฐ๊ธฐ
ย ์๋ฐ์คํฌ๋ฆฝํธ์๋ ํ๊ฐ ์๋ค. C++์ด๋ ๋ค๋ฅธ ์ธ์ด์ฒ๋ผ Queue๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ง์ ๊ตฌํํด์ผ ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์๋ค. ๋ฐ๋ก ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค!
ย ๋ฐฐ์ด๋ก ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ์ง๋ง ์ญ์ ํ ๋ ๋ฐฐ์ด์ด ์ด๋๋์ง ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๊ฐ ๊ธฐ์กด์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ถํฐ ์์ํด์ ์ถ๊ฐ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋์ ์ผ๋ก ๋ณํํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋ณ๋ก ํฐ ์ํฅ์ ๋ฐ์ง๋ ์์ง๋ง, ์ญ์ ์ ์ถ๊ฐ๋ฅผ ๋ฐ๋ณตํ๋ค๋ณด๋ฉด ๋ฆฌ์ด์ ํ๋ก ํธ์ ๊ฐ์ด ๋ฌดํ์ ์ปค์ง ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
ย ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ๋ ๋ฐฐ์ด๋ก ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ณด๋ค ๊ตฌํ์ด ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ์ฝ๋ฉํ ์คํธ๋ฅผ ์ํด์ ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๋ฐฐ์ด๋ก ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค!
ย ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ ๊ฒ๋ณด๋ค๋ ์กฐ๊ธ ๋ณต์กํ์ง๋ง ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ํค๋๊ฐ ํ๋ก ํธ๊ฐ ๋๊ณ ๋ฆฌ์ด๊ฐ ํ ์ผ์ด ๋๋ค๊ณ ์๊ฐํ๋ฉด, ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด์ ์ด๋ ต์ง ์๊ฒ ํ๋ฅผ ๊ตฌํํ ์ ์๋ค.
์ฌ๋ฌผํจ์ ์ฃผ์ธ์ ์ฐพ์๋ผ!
ย ํด์ ํ
์ด๋ธ์ ํค์ ๊ฐ์ ๋ฐ์ ํค๋ฅผ ํด์ฑํด์ ๋์จ ๊ฐ์ ์ธ๋ฑ์ค๋ก ์ ์ฅํ๋ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.
ํด์ ํ
์ด๋ธ์ ๊ฐ๊ฐ์ ํค๊ฐ์ ํด์ํจ์๋ฅผ ์ ์ฉํด ๋ฐฐ์ด์ ๊ณ ์ ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๊ณ ์ด ์ธ๋ฑ์ค๋ฅผ ํ์ฉํด ๊ฐ์ ์ ์ฅํ๊ฑฐ๋ ๊ฒ์ํ๊ฒ ๋๋ค. ๊ฐ์ด ์ ์ฅ๋๋ ์ฅ์๋ฅผ ๋ฒํท์ด๋ผ ๋ถ๋ฅธ๋ค.
ย ํด์ ํจ์๋ ํน์ ํ ๊ตฌํ๋ฐฉ๋ฒ์ด ์์ง๋ ์๋ค. ์ํ๋๋๋ก ๊ตฌํํด์ ์ฌ์ฉํ ์ ์๋ค. ํด์ ํ ์ด๋ธ์ ์๋ฒฝํด ๋ณด์ด์ง๋ง ๋ฌธ์ ์ ์ด ์๋ค. ํค ๊ฐ์ ํด์ฑํด์ ๋์จ ์ธ๋ฑ์ค๊ฐ ๋์ผํ ์ ๋์๋ค. ์ด๋ด ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ๋ค๊ณ ๋งํ๋ค.
ย ํด์ ํจ์ ์ถฉ๋์ ํด๊ฒฐํ๊ธฐ ์ํ 4๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
ย ํด์ ํ
์ด๋ธ์ ์ธ์ ์ฌ์ฉํ๋๊ฐ?
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋
ธ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๊ฒ์ ์ด๋ ต์ง ์์ง๋ง ํ์์ ํ ๊ฒฝ์ฐ์๋ ์ ํ์๊ฐ ๋งํผ์ด ์์๋๋ค. ๊ทธ๋ ๋ค๊ณ ํ์์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค ํ๋๋ผ๋ ์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์ฐ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์์ ์ ํ์๊ฐ ๋งํผ ์์๋๋ค. ์ด๋ด ๊ฒฝ์ฐ ํด์ ํ
์ด๋ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค! ํค ๊ฐ๊ณผ ํด์ ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ฒํท์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ํ์๊ณผ ์ฝ์
์ญ์ ๊ฐ ๋ชจ๋ ์์ ์๊ฐ๋ง์ ๋๋๋ค.
ย ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
ย Map์ ์ฌ์ฉํ๋ฉด setํจ์์ getํจ์๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฐพ์ ์ ์๋ค. ๋ํ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ฌ๋ฆฌ ํค๊ฐ์ผ๋ก ์ค๋ธ์ ํธ๋ ๋ฐฐ์ด๊ฐ์ ํ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์๊ฐ ์๋๊ฒฝ์ฐ ์ ๋ถ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ค์ํ ํ์ ์ด ํ์ํ๋ค๋ฉด Mapํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋น์ ํ ์๋ฃ๊ตฌ์กฐ. ๋ฒ์จ ๋ถํฐ ๋จธ๋ฆฌ๊ฐ ์ํ๋ค!
ย ๊ทธ๋ํ๋ ์ ์ ๊ณผ ์ ์ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๋น์ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค. ์ ์ ์งํฉ๊ณผ ๊ฐ์ ์งํฉ์ผ๋ก ํํํ ์ ์๋ค. ์ฌ๊ธฐ์ ์ ์ ์ Node ๊ฐ์ ์ Edge๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
ย ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์ธ ๊ทธ๋ํ์ ํน์ง์ผ๋ก ์ ์ ์ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ ์ ๊ฐ์ง ์ ์๊ณ . ๊ฐ์ ์ ๋ฐฉํฅ์ฑ์ ๋ถ์ฌํ๋๊ฒ์ ๋ฐ๋ผ ๋ฐฉํฅ ๊ทธ๋ํ์ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ๋ก ๋๋ ์ ์๋ค. ๋ํ ๊ฐ์ ๋ง๋ค ๊ฐ์ค์น๋ฅผ ๊ฐ์ง ์์๊ธฐ ๋๋ฌธ์ ์ต๋จ๊ฑฐ๋ฆฌ ๋๋ ์ต์ฅ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๋ค. ์ฃผ์ํ ์ ์ผ๋ก ์ฌ์ดํด์ ๊ฐ์ง ์ ์๋ค๋ ํน์ง์ด ์๋๋ฐ, ์ฌ์ดํด์ ์๋ชปํ๋ฉด ๋ฌดํ ๋ฃจํ์ ๋น ์ง์ ์๋ค. ๋ฐ๋ผ์ ์ฌ์ดํด์ ์ ๊ด๋ฆฌํด์ผ ํ๋ค.
ย ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ๋ ๋ ธ๋์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ ๋ฐฉํฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฐฉํฅ ์ด๋์ด ๊ฐ๋ฅํ๋ค. A - B์์ A -> B๋ ๊ฐ๋ฅํ๊ณ A <- B๋ ๊ฐ๋ฅํ๋ค. ๋ฐฉํฅ๊ทธ๋ํ์ ๊ฒฝ์ฐ ๋ ธ๋์ ๋ ธ๋๊ฐ ์๋ฐฉํฅ ์ด๋์ด ๊ฐ๋ฅํ์ง๋ง ๊ฐ์ ์ด ๋ ๊ฐ์ฌ์ผ ํ๋ค. ํ ๊ฐ๋ง ์์ ๊ฒฝ์ฐ ๋จ๋ฐฉํฅ ์ด๋๋ง ๊ฐ๋ฅํ๋ค.
ย ๊ฐ์ ์ ๋ฐฉํฅ์ฑ์ด ์๋, ์ ์ฒด ๊ทธ๋ํ์ ์ฐ๊ฒฐ ์ํ์ ๋ฐ๋ฅธ ๋ถ๋ฅ๋ฅผ ํ ์ ์๋ค. ์ฐ๊ฒฐ ๊ทธ๋ํ์ ๋น์ฐ๊ฒฐ ๊ทธ๋ํ, ์์ ๊ทธ๋ํ๊ฐ ์๋ค.
์ฐ๊ฒฐ ๊ทธ๋ํ๋ ๋ชจ๋ ์ ์ ์ด ์๋ก ์ด๋ ๊ฐ๋ฅํ ์ํ์ธ ๊ทธ๋ํ๋ฅผ ๋งํ๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ ๋
ธ๋์์ ๊ฐ ๋
ธ๋์ ๊ฐ์ ์ด ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๋ป์ ์๋๋ค. ํน์ ์์๋
ธ๋๋ก ๋ถํฐ ๋ชจ๋ ๋
ธ๋์ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฒ์ ๋งํ๋ค.
๋น์ฐ๊ฒฐ ๊ทธ๋ํ๋ ํน์ ์ ์ ์ ์ฌ์ด์ ๊ฐ์ ์ด ์กด์ฌํ์ง ์๋ ๊ทธ๋ํ๋ฅผ ๋งํ๋ค.
์์ ๊ทธ๋ํ๋ ๋ชจ๋ ์ ์ ๋ผ๋ฆฌ ์ฐ๊ฒฐ๋ ์ํ์ธ ๊ทธ๋ํ๋ฅผ ๋งํ๋ค.ํ ์ ์ ์ ๊ฐ์ ์๋ (์ ์ฒด ์ ์ ์ - 1)์ด๊ณ ,
(๋ชจ๋ ์ ์ ์ ์ - 1) * (๋ชจ๋ ์ ์ ์ ์)๋ ๋ชจ๋ ๊ฐ์ ์ ์๋ฅผ ์๋ฏธํ๋ค.
ย ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๊ฐ๋ ์ ์ฝ๊ฒ ์ดํดํ๋๋ฏ ํ์ผ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ๋ง๋๋ฉด ์ด๋ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง ๋ฌธ์ ํ์ ์ ์ ๋๋ก ํ์ง ๋ชปํ๊ณ ์๋ค. ๋ฐ๋ณต๊ณผ ์ฐ์ต๋ง์ด ์ด๊ธธ์ด๋ค...