๋์ ํ๋ก๊ทธ๋๋ฐ์ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ถ๋ถ ๋ฌธ์ (sub-problems)๋ก ๋๋์ด ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ํจ๋ฌ๋ค์์ ๋๋ค. ์ด๋ฌํ ๋ถ๋ถ ๋ฌธ์ ์ ํด๋ฅผ ์ ์ฅํ์ฌ, ๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ๊ฐ ์ฌ๋ฌ ๋ฒ ๋ํ๋ ๋ ๋ค์ ๊ณ์ฐํ์ง ์๊ณ ์ ์ฅ๋ ๊ฐ์ ์ฌํ์ฉํ๋ ๊ฒ์ด ๋์ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ ์์ด๋์ด์ ๋๋ค.
์๊ฐ ๋ณต์ก๋ :
๊ณต๊ฐ ๋ณต์ก๋ :
ํ-๋ค์ด (Top-Down)
์ฌ๊ท๋ก ๊ตฌํ, "๊ธฐ์ ์กฐ๊ฑด(Base Case)" ํ์
์ฝ๋ ์ดํดํ๊ธฐ ์ฌ์: ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ๋ ๋ฌธ์ ๋ฅผ ์์ฐ์ค๋ฌ์ด ํํ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ์ฝ๋๊ฐ ๋ ์ดํดํ๊ธฐ ์ฌ์ธ ์ ์์ต๋๋ค.
๊ฐ๋ฐ ์๋ ๋น ๋ฆ: ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๋ฌธ์ ๋ ๋น๊ต์ ๋น ๋ฅด๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
ํจ์ ํธ์ถ ์ค๋ฒํค๋: ์ฌ๊ท ํธ์ถ์๋ ์ผ์ ํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ์ฌ๊ท ํธ์ถ๋ก ์ธํด ์คํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ด๋ ์ ์์ต๋๋ค.
๋ฐ๋ก ์ต์ ํ ํ์: ๊ผฌ๋ฆฌ ์ฌ๊ท ๋ฑ์ ํ์ฉํ์ง ์์ผ๋ฉด ์คํ ์ค๋ฒํ๋ก์ฐ์ ์ํ์ด ์์ต๋๋ค.
๋ฐํ -์ (Bottom-Up)
๋ฐ๋ณต๋ฌธ์ ํตํด์ ๊ตฌํ
ํจ์จ์ฑ: ์ผ๋ฐ์ ์ผ๋ก ํจ์ ํธ์ถ ์ค๋ฒํค๋๊ฐ ์๊ณ , ๋ฃจํ๋ฅผ ํตํด ์ฐ์ฐ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅผ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ต์ ํ: ํ์ํ ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๋ง ์ฌ์ฉํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ด ๋์ ์ ์์ต๋๋ค.
์ฝ๋ ์ดํดํ๊ธฐ ์ด๋ ค์: ๋ฌธ์ ๋ฅผ ๋น์ฌ๊ท์ ์ผ๋ก ํ์ด์ผ ํ๋ฏ๋ก, ์ฝ๋์ ์ดํด๊ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
๊ฐ๋ฐ ์๋ ๋๋ฆผ: ์์ ๋ฌธ์ ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ํด๊ฒฐํด์ผ ํ๋ฏ๋ก ๊ฐ๋ฐ ์๋๊ฐ ๋๋ฆด ์ ์์ต๋๋ค.
๋ฉ๋ชจ์ด์ ์ด์ ์ ๋์ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ฐฉ๋ฒ์ผ๋ก, ์ด๋ฏธ ๊ณ์ฐํ ๋ถ๋ถ ๋ฌธ์ ์ ํด๋ฅผ ์ ์ฅํด๋๋ ํ ํฌ๋์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์ผํ ๋ถ๋ถ ๋ฌธ์ ๊ฐ ๋ค์ ๋ํ๋ฌ์ ๋, ๋ถํ์ํ ๊ณ์ฐ์ ํผํ๊ณ ์ ์ฅ๋ ๊ฐ์ ์ฌ์ฉํ์ฌ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์๊ฐ๋ณต์ก๋ :
๊ณต๊ฐ๋ณต์ก๋ :
๋์ ํ๋ก๊ทธ๋๋ฐ(Dynamic Programming, DP)๊ณผ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization)์ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ง๋ง, ์ ํํ๊ฒ ๊ฐ์ ๊ฐ๋ ์ ์๋๋๋ค.
๋ฉ๋ชจ์ด์ ์ด์ ์ ๋์ ํ๋ก๊ทธ๋๋ฐ์ ์ผ์ข ์ด๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ, ๋์ ํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค.