https://www.acmicpc.net/problem/2579
2579๋ฒ: ๊ณ๋จ ์ค๋ฅด๊ธฐ
๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ฒ์์ ๊ณ๋จ ์๋ ์์์ ๋ถํฐ ๊ณ๋จ ๊ผญ๋๊ธฐ์ ์์นํ ๋์ฐฉ์ ๊น์ง ๊ฐ๋ ๊ฒ์์ด๋ค. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ๊ฐ๊ฐ์ ๊ณ๋จ์๋ ์ผ์ ํ ์ ์๊ฐ ์ฐ์ฌ ์๋๋ฐ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด ๊ทธ ๊ณ๋จ์ ์ฐ์ฌ ์๋ ์
www.acmicpc.net
step: ๊ณ๋จ๋ณ๋ก ์ ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด
dp: ํด๋น ๊ณ๋จ์ ๋ง์ง๋ง์ผ๋ก ๋ฐ์ ๋๊น์ง ๋์ ๋ ์ต๊ณ ์ ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด
๊ณ๋จ ๊ท์น
- ๊ณ๋จ์ ํ ๋ฒ์ ํ ์นธ ๋๋ ๋ ์นธ์ฉ ์ด๋ํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ์ฐ์๋ ์ธ ๊ฐ์ ๊ณ๋จ์ ๋ฐ์ ์๋ ์๋ค.
์ ๊ท์น์ ์งํค๋ฉด์ i๋ฒ์งธ ์นธ์ ๊ผญ ๋ฐ์์ผ ํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์.
ํ์ฌ ์์นํ ์นธ๊น์ง ๋์ ๋ ์ต๊ณ ์ ์ dp[i]๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค.
1. ์ง์ ์นธ ๋ฐ์ง ์๊ธฐ
์ด ๊ฒฝ์ฐ ๊ฐ๋จํ๋ค.
dp[i] = (ํ์ฌ ์นธ์ ์ ์) + (i-2๋ฒ์งธ ์นธ๊น์ง ๋์ ๋ ์ต๊ณ ์ ์) = step[i] + dp[i-2]
2. ์ง์ ์นธ ๋ฐ๊ธฐ
(i-1)๋ฒ์งธ ์นธ์ ๋ฐ๋ ๊ฒฝ์ฐ, ๋ฌธ์ ์์ ์ ์ํ ๊ท์น์ ๋ง์กฑํ๊ธฐ ์ํด์ i-2๋ฒ์งธ ์นธ์ ๋ฐ์ ์ ์๊ณ , i-3๋ฒ์งธ ์นธ์ ๋ฌด์กฐ๊ฑด ๋ฐ์์ผ ํ๋ค.
๋ฐ๋ผ์ dp[i] = (ํ์ฌ ์นธ์ ์ ์) + ((i-1)๋ฒ ์นธ์ ์ ์) + ((i-3)๋ฒ ์นธ๊น์ง ๋์ ๋ ์ต๊ณ ์ ์) = step[i] + step[i-1] + dp[i-3]
์ฆ, ์ ํ์์ ์ธ์๋ณด๋ฉด
dp[i] = max ( step[i]+dp[i-2], step[i]+step[i-1]+dp[i-3] )
์ ํ์์ i>=3 ์ธ ๊ฒฝ์ฐ์๋ง ๋ง์กฑํ๋ฏ๋ก dp[0]~dp[2]๋ ๋ฐ๋ก ์ด๊ธฐํ๋ฅผ ์์ผ์ค๋ค.
(๋ฐฐ์ด์ด 0๋ถํฐ ์์ํ๋ฏ๋ก ๊ณ๋จ ๋ฒํธ๋ 0๋ถํฐ ์ผ๋ค)
0๋ฒ ์นธ: dp[0] =step[0]
1๋ฒ ์นธ:
1๋ฒ ์นธ์ ๋ฐ์ผ๋ ค๋ฉด ๋ค์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ ์ค ํ๋๋ฅผ ๊ณ ๋ฅด๋ฉด ๋๋๋ฐ,
0๋ฒ ์นธ์ ๋ฐ๋ ๊ฒ ๋ฌด์กฐ๊ฑด ์ด๋์ด๋ค.
๋ฐ๋ผ์ dp[1] = step[1] + step[0]
2๋ฒ ์นธ:
2๋ฒ์นธ์ ๋ฐ์ ์ ์๋ ๊ฒฝ์ฐ๋ ๊ณ๋จ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ด๋ค.
๋ ์ค ๋ ํฐ ๊ฐ์ ๊ณ ๋ฅด๋ฉด ๋๋ค.
dp[2] = max( step[2] + step[1] , step[2] + step[0])
ํ์ด์ฌ ์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
step=[]
for i in range(n):
step.append(int(input()))
if n<=2:
print(sum(step))
exit()
if n==3:
print(max(step[0]+step[2],step[1]+step[2]))
exit()
dp = [0]*n
dp[0]=step[0]
dp[1]=step[1]+step[0]
dp[2]=max(step[2]+step[1], step[2]+step[0])
for i in range(3,n):
dp[i]=max(step[i]+dp[i-2], step[i]+step[i-1]+dp[i-3])
print(dp[-1])
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > DP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]14501๋ฒ: ํด์ฌ (0) | 2023.03.23 |
---|---|
[๋ฐฑ์ค]1932๋ฒ: ์ ์ ์ผ๊ฐํ (0) | 2023.03.11 |
[๋ฐฑ์ค]11053๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด / 11722๋ฒ: ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (0) | 2023.02.26 |
[์ด์ฝํ ] ๊ธ๊ด (0) | 2023.02.26 |
[์ด์ฝํ ] ๊ฐ๋ฏธ ์ ์ฌ (0) | 2023.02.25 |