DP(Dynamic Programming)



๐ข ๋ถํฐ ๊น์ง ์ ๊ทผํ๋ ๋ฐฉ์
memoization : Top-down ๋ฐฉ์์์ memo๋ฅผ ์ฑ์ ๋๊ฐ๋ ๊ฒ
๐ข ๋ถํฐ ๊น์ง ์ ๊ทผํ๋ ๋ฐฉ์
tabulation : Bottom-up ๋ฐฉ์์์ memo๋ฅผ ์ฑ์ ๋๊ฐ๋ ๊ฒ
๋ณดํต ๋ฌธ์ ๋ฅผ ํ ๋ ์์ ํ์์ผ๋ก ๋จผ์ ์ ๊ทผ์ ํฉ๋๋ค.
์์ ํ์์ 1. ์ฌ๊ท๋ฅผ ๋ง์ด ์ด์ฉํฉ๋๋ค.
์ฌ๊ท๋ ํ์๋ฌธ์ ๋ก ๋๋๊ธฐ ์์
์ ํ๋ ๊ฒ์
๋๋ค.
์ฌ๊ท๊ฐ ์๋๋๋ผ๋ 2. ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ๋
์ค๋ณต๋ ๊ฐ์ด ๋์ฌ ๋ -> ๊ณ์ฐ๊ฒฐ๊ณผ๋ฅผ (memo) ์ ์ฅํ์ฌ ์ฌํ์ฉ
+๋ฌธ์ ์์ ๋ต์ด ์๋ค.
DP : ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ด๋ ํฌ๊ณ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ์๊ฒ ๋๋๊ณ , ์ค๋ณต๋๋ ๋ฌธ์ ๋ผ๋ฉด ํ ๋ฒ ๊ณ์ฐํ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํด๋๊ณ ์ฌ์ฌ์ฉํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ
๋ฌธ์ ํ์ด : ํน์ ํ ๋ฌธ์ ๋ฅผ ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ๊ทผํด๋ณด๊ณ , ์๊ฐ๋ณต์ก๋๊ฐ ๋๋ฌด ๋๋ค๋ฉด DP๋ฅผ ์ ์ฉํ ์ ์๋์ง ์๊ฐํด๋ณด์. subproblem์ ์ค๋ณต ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๊ฒ์ด ์ฒซ๋ฒ์งธ ์์๋ค.
๊ตฌํ ๋ฐฉ๋ฒ :
1. ์ผ๋จ ์ฌ๊ทํจ์๋ก ๋นํจ์จ์ ์ธ ๐์์ ํ์๐ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
2. ์ค๋ณต๋๋ ๐subproblem๐์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ๐(memoize)๐ํ๋ค.
3. ๐ํ๋ค์ด -> ๋ฐํ
์
๐์ผ๋ก ์ฝ๋ ์ ํ์ ๊ณ ๋ คํ๋ค.
์ฝํ ์ถ์ : DP๋ ๋ฌธ์ ์ ์ ์ฉํ๊ธฐ์ ์ด๋ ค์ด ๊ฐ๋ ์ด๋ผ์ ์ฝ๋ฉํ ์คํธ์์๋ ๊ธฐ๋ณธ์ ์ถฉ์ค๋ง ๋ฌธ์ ์์ฃผ๋ก ์ถ์ ํ ์ ๋ฐ์ ์๋ค.
๊ฐ๋ ๋ง ์ ๋ฆฌํ๊ณ
๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ณด์!!
์ถ์ฒ