
- DP๋?
DP๋ ํ๋์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ ๊ธฐ๋ฒ์ ์๋ฏธํ๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋ถ๋ฅ๋ก ๋ฃ๊ธด ํ์ผ๋ฉด ์ด๋ ์ฌ์ค ๋ฐฉ๋ฒ๋ก ์ด๋ผ๊ณ ํ๋ ๊ฒ ๋ ๋ง๋ ๊ฒ ๊ฐ๋ค. ์ด๋ฆ์ ๋ป์ด ๋ญ๊ฐ ๊น์ ์๋ฏธ๊ฐ ๋ด๊ฒจ ์์ด ๋ณด์ด์ง๋ง, ๊ทธ๋ฅ ๋ฉ์์ด์ ์ง์ ์ด๋ฆ์ด๋ฏ๋ก ์ด๋ฆ๊ณผ ํด๋น ๋ฐฉ๋ฒ์ ์ฐ๊ด์ด ์๋ค๋ ์๊ฐ์ ๋ฒ๋ฆฌ๋ ๊ฒ์ด ์ข๋ค.
- ์ ์ฐ๋์?
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ์ต์ ํ๋ค. ํ์ ์ค๋ช ๋ Momozation ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ฒ์ ๊ฐ์ ๋ณด๊ดํด๋๊ณ ์ด๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ ํ์๊ฐ ์์ด ์ต์ ํ์ ์ฉ์ดํ๋ค.
- ์ธ์ ์ฐ๋์?
DP๋ฅผ ์ ์ฉํด๋ณด๊ธฐ ์ํด์๋ 2๊ฐ์ง ์กฐ๊ฑด์ด ํ์ํ๋ค.
1. ๊ฒน์น๋ ์๋ฌธ์
์์ ๋ฌธ์ ๋ก ๋๋์์ ๋, ์ค๋ณต๋๋ ๋ถ๋ถ์ด ์์ด ๊ฐ ์๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ฉํ ์ ์๋ค๋ฉด DP๋ฅผ ์ ์ฉํ๊ธฐ ์ด๋ ต๋ค.
2. ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ
์๋ฌธ์ ๋ค์ ๊ฐ ์ต์ ์ ๊ฐ์ ์ด์ฉํ์ฌ ๋ง๋ ์ ์ฒด ๋ฌธ์ ์ ๊ฐ์ด ์ต์ ์ด ๋๋ฉด DP๋ฅผ ์ ์ฉํ ์ ์๋ค.
- DP์ ์ ์ฉ
DP๋ฅผ ์ ์ฉํ ์ ์๋ ๋ฌธ์ ๋ ๋ชจ๋ ํน์ ํ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- ๊ท์น 1. ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋์ด ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ํฐ ๋ฌธ์ ์ ๋ต์ ๋์ถํ ์ ์๋ค.
- ๊ท์น 2. ์ ํ์์ ๋ชจ๋ ๊ฐ n์ ๋ํด ํญ์ ์ฑ๋ฆฝํด์ผ ํ๋ค.
- ๊ท์น 3. Memozation: ๋ฐ๋ณต๋๋ ๋์ผ ์ฐ์ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ, ํ์ํ ๋ ํธ์ถํ๋ค.
- ๊ท์น 4. ๋ฐ์ดํฐ ํ ์ด๋ธ(๊ท์น 3์ ์ ์ฅํ ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๊ตฌ์ฑ)
ํผ๋ณด๋์น์ ์ ๋ฌธ์ ์ค, f(5)์ ๊ฐ์ ๊ตฌํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์
f(5) = f(4) + f(3)
๋ก ์ ์๋ ์ ์๋ค. ์ฌ๊ธฐ์ ํต์ฌ์ f(4)์ f(3)์ญ์๋ ๊ฐ์ ํ์์ผ๋ก ํ์ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
f(4) = f(3) + f(2)
f(3) = f(2) + f(1)
๊ฒฐ๊ตญ ํผ๋ณด๋์น์ ์ ๋ฌธ์ ์์ N์ ๊ตฌํ๊ณ ์ ํ ๋๋
f(N) = f(N-1) + f(N-2)
๋ผ๋ ์์ ํญ์ ๋์ ํ๋ฉด ๋๋ ๊ฒ์ด๋ค. ํด๋น ์์ ์ ํ์์ด๋ผ๊ณ ์นญํ๋ค.
์ฌ๊ธฐ์ f(1)๊ณผ f(2)์ ๊ฐ์ ์ง์ ํด ์ฃผ๊ณ , 3,4,5,... ๋ฅผ ๋ฐ๋ก ์ฐ์ฐํ ํ์ ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์ ์ฅํ๊ฒ ๋๋ฉด f(N)๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด f(N-1)์ f(N-2)์ ๋ ๊ณ์ฐํ ํ์๊ฐ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
- DP์ ํ์ด ๋ฐฉ์
Bottom-Up: ๋ฐ์ดํฐ๊ฐ ์ฐจ๊ณก์ฐจ๊ณก ์์๊ฐ๋ฉฐ ๋ณธ๋ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ๊ธฐ๋ฒ์ด๋ค.
1~ N๊น์ง์ ์ ์ฅ ๊ณต๊ฐ dp [N]์ด ์๋ค๊ณ ํ๋ฉด dp [1], dp [2], dp [3],..., dp [N]๊น์ง ์ฒ์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ตฌํ๋ ๊ฒ์ด๋ค.
ํผ๋ณด๋์น์ ๊ฒฝ์ฐ f(1) ๊ตฌํ๊ณ .. f(2) ๊ตฌํ๊ณ โฆf(n)๊ตฌํ๊ณ ...
=> ๋ณดํต ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ๋ฉฐ, ์์ฐจ์ DP ํ์ด๋ผ๊ณ ํ ์ ์๋ค.
Top-Down: ์ด๋ ํ ํน์ ํจํด์ ์ด์ฉํ์ฌ ์ฐ์ฐ(์ ํ์)
=> ์ฌ๊ทํจ์๋ฅผ ๋ณดํต ์ด์ฉํจ(Recursion, Momozation)