import sys
n = int(sys.stdin.readline())
s = [0 for _ in range(301)]
dp = [0 for _ in range(301)]
for i in range(n):
s[i] = int(input())
dp[0] = s[0]
dp[1] = s[0] + s[1]
dp[2] = max(s[0] + s[2], s[1] + s[2])
for i in range(3, n):
dp[i] = max(dp[i - 3] + s[i - 1] + s[i], dp[i - 2] + s[i])
print(dp[n - 1])
dp에 i - 3 부분이 있으므로
0, 1, 2 까지는 직접 계산해준다
'알고리즘' 카테고리의 다른 글
<리트코드> 561번 파이썬 알고리즘 (0) | 2021.11.24 |
---|---|
<리트코드> 42번 파이썬 알고리즘 [투 포인터] (0) | 2021.11.24 |
<백준> 1629번 파이썬 알고리즘 [분할정복] (0) | 2021.11.12 |
<백준> 1992번 파이썬 알고리즘 [분할 정복] (0) | 2021.11.08 |
<백준> 1780번 파이썬 알고리즘 [분할 정복] (0) | 2021.11.06 |