DP์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ๋ฆฌ๋ ์๋์ ์ ์ด๋์์ต๋๋ค.
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (Dynamic Programming)
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (Dynamic Programming)๋. ์์์ ๊ธ์๋ฅผ ๋ฐ์ dp ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๊ณ ๋์ ๊ณํ๋ฒ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. "ํน์ ๋ฒ์๊น์ง์ ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด์ ๊ทธ๊ฒ๊ณผ ๋ค๋ฅธ ๋ฒ์๊น์ง์ ๊ฐ์ ์ด์ฉํ์ฌ ํจ์จ
jun-13.tistory.com
์ ๊ทผ๋ฐฉ๋ฒ
๋ค์ํ ์กฐ๊ฑด์ ๊ฐ์ง dp ๋ฌธ์ ๋ฅผ ๋ง๋๋ค ๋ณด๋ dp๋ฌธ์ ๋ฅผ ๋ง๋ฌ์ ๋ ์ด๋ป๊ฒ ๋์ฒ๋ฅผ ํด์ผ ํ๋๊ฐ๋ฅผ ์ ๋ฆฌํด์ ์ ์ด๋ณด๋ ค๊ณ ํฉ๋๋ค.
dp๋ผ๋ ๊ฑฐ ์์ฒด๊ฐ "ํ์๋ฌธ์ ๋ถํฐ ์ฐจ๋ก๋ก ๊ตฌํด๋๊ฐ์ ์ต์ข ์ ์ธ ๋ต์ ๋์ถํด ๋ด๋ ํํ์ ์๊ณ ๋ฆฌ์ฆ"์ด๋ผ๋ ํ์์ด ๊ธฐ๋ณธ ์ ์ ์กฐ๊ฑด์ด๋ค ๋ณด๋
dp๋ ํฌ๊ฒ 2๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
- ๊ณผ๊ฑฐ์ ๊ฐ์ผ๋ก ํ์ฌ์ ๊ฐ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์.
- ํ์ฌ์ ๊ฐ์ผ๋ก ๋ฏธ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์.
์์ ๊ฐ์ ๋ฐฉ์๋ค์ ํ์ด์ ์ ์ด๋ณด์๋ฉด
1. ๊ณผ๊ฑฐ์ ๊ฐ์ผ๋ก ํ์ฌ์ ๊ฐ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์.
"dp[i] = dp[i - 2] + dp[i - 1]"
i์ ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด์ ์ด์ ์ ๊ฐ๋ค์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์.
๊ณ์ฐ์ ํ๋ ๊ธฐ์ค์ ํ์ฌ์ ๊ฐ ( i ) ๋ก ์ก๊ณ ์ด์ ์ ๊ฐ๋ค์ ๊ฐ์ ธ๋ค๊ฐ ๊ฐ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ด ์๋ค๊ณ ์๊ฐ์ ํฉ๋๋ค.
2. ํ์ฌ์ ๊ฐ์ผ๋ก ๋ฏธ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์.
"dp[i + 1] = dp[i - 1] + dp[i]"
i + 1์ ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด ํ์ฌ์ ๊ฐ์ผ๋ก ๋ฏธ๋์ ๊ฐ์ ์ง์ ํด ์ฃผ๋ ๋ฐฉ์.
1๋ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ๊ณ์ฐํ๋ ค๋ ๊ธฐ์ค์ i + 1 ์ฆ ๋ฏธ๋์ ๊ฐ์ผ๋ก ์ก๊ณ ํ์ฌ์ ๊ฐ ๋ฑ์ ๊ฐ์ ธ๋ค๊ฐ ๊ฐ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
1๋ฒ ์์ ์ 2๋ฒ ์์ ์์ ์ ์ ์๋ฏ์ด
"dp[i] = dp[i - 2] + dp[i - 1]"๊ณผ "dp[i + 1] = dp[i - 1] + dp[i]" ๋ชจ๋ ํผ๋ณด๋์น์ ์๋ฅผ ๊ตฌํ๋ dp ์ ํ์์ผ๋ก
์ต์ข ์ ์ผ๋ก ํผ๋ณด๋์น์์ ์ํ๋ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ 1๋ฒ๊ณผ 2๋ฒ ๋ชจ๋ ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๊ทธ๋์ ์๊ฐ์ด ๋ค์๋ ๊ฒ
"dp๋ฌธ์ ์ ์๊ด์์ด 1๋ฒ๊ณผ 2๋ฒ ๋ชจ๋ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ด๊ณ ๋ญ๊ฐ ๋ง๋ค, ๋ญ๊ฐ ํ๋ฆฌ๋ค, ๊ฒฐ๋ก ์ ์ธ ์ฐจ์ด์์๋ ์๊ด์ด ์๋ ๊ฑด๊ฐ?"
๋ผ๋ ์๊ฐ์ด ๋ค์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋๋ก
2579๋ฒ: ๊ณ๋จ ์ค๋ฅด๊ธฐ
๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ฒ์์ ๊ณ๋จ ์๋ ์์์ ๋ถํฐ ๊ณ๋จ ๊ผญ๋๊ธฐ์ ์์นํ ๋์ฐฉ์ ๊น์ง ๊ฐ๋ ๊ฒ์์ด๋ค. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ๊ฐ๊ฐ์ ๊ณ๋จ์๋ ์ผ์ ํ ์ ์๊ฐ ์ฐ์ฌ ์๋๋ฐ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด ๊ทธ ๊ณ๋จ์ ์ฐ์ฌ ์๋ ์
www.acmicpc.net
์์ ๋ฌธ์ ํ์ด๋ฅผ ์งํํ์์ต๋๋ค.
๋๊ฐ์ง ๋ชจ๋๋ก ํ์ด๋ฅผ ์งํํ๋ค ๋ณด๋
[๋ฐฑ์ค] 2579๋ฒ - ๊ณ๋จ ์ค๋ฅด๊ธฐ (C++)
2579๋ฒ: ๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ฒ์์ ๊ณ๋จ ์๋ ์์์ ๋ถํฐ ๊ณ๋จ ๊ผญ๋๊ธฐ์ ์์นํ ๋์ฐฉ์ ๊น์ง ๊ฐ๋ ๊ฒ์์ด๋ค. ๊ณผ ๊ฐ์ด ๊ฐ๊ฐ์ ๊ณ๋จ์๋ ์ผ์ ํ ์ ์๊ฐ ์ฐ์ฌ ์๋๋ฐ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด ๊ทธ ๊ณ๋จ์
jun-13.tistory.com
๊ฒฐ๋ก
์์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋์๋๋ฐ ํต์ฌ๋ง ์ ๋ฆฌ๋ฅผ ํด๋ณด์๋ฉด
"๊ทธ๋ฅ ์ ์ฝ์กฐ๊ฑด์ด ์๋ dp๋ฌธ์ ๊ฐ ์๋ ์ฌ์ ์ dp์ ๋ํ ์ ์ฝ์กฐ๊ฑด์ด ๊ฑธ๋ ค์๋ค๋ฉด 1๋ฒ์ ๋ฐฉ๋ฒ(๊ณผ๊ฑฐ์ ๊ฐ์ผ๋ก ํ์ฌ์ ๊ฐ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์.)
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค."๋ผ๋ ๊ฒฐ๋ก ์ ๊ฐ์ง๊ฒ ๋์์ต๋๋ค.
์๋ํ๋ฉด ํ์ฌ์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฏธ๋์ ๊ฐ์ ์ ์ํ๋ ๊ฒ์ ๋ฏธ๋์ ๊ฐ์ด ์ด๋ป๊ฒ ๋๊ณ ์ ํ์กฐ๊ฑด์ด ๋ฏธ๋์๋ ์ด๋ป๊ฒ ์์ฉ์ด ๋ ๊ฒ์ธ์ง
๋ฏธ๋ฆฌ ์๊ฐ์ ํ๊ณ ์ ๊ทผ์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ํ์์ ์ผ๋ก ํ์ํ๊ฒ ๋๋๋ฐ ๊ทธ ๊ณผ์ ์์ ์ถ๊ฐ์ ์ผ๋ก ๊ณ์ฐํด์ค์ผ ํ๋ ์์ด ๋ถ๊ฒ ๋๊ณ ์ฝ๋์ ๋ณต์ก๋๊ฐ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค๊ณ ์๊ฐํ์์ต๋๋ค.
๊ทธ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅด๊ฒ ๊ณผ๊ฑฐ์ ๊ฐ์ผ๋ก ํ์ฌ์ ๊ฐ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ์ด๋ฏธ ์ง๋์จ ๊ณผ์ ์ ๋ฐํ์ผ๋ก ํ์ฌ์ ๊ฐ์ ์๊ฐํ๋ ๊ณผ์ ์ด๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ๋ฐํ์ผ๋ก ์๊ฐํ๋ ๋ฐฉ์์ด๋ผ 2๋ฒ ๋ฐฉ๋ฒ์ ๋นํด ํจ์ฌ ๋ ๋ณต์กํ๊ณ ์ง๊ด์ ์ผ๋ก ๋ฌธ์ ์ ์ ๊ทผ์ ํ ์ ์๊ฒ ๋๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
'Algorithm > ๊ฐ๋ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (Dynamic Programming) (0) | 2023.08.09 |
---|