import sys
input = sys.stdin.readline
n = int(input())
s = [0 for i in range(301)]
dp = [0 for i 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[1]+s[2],s[0]+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[2]의 경우엔 s[0]을 건너뛰고 s[1]에서 s[2]를 밟은 경우와 s[0]에서 s[1]을 건너 뛰고 s[2]를 밟은 경우가 있다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][동적 계획법1] 2156 . 포도주 시식(파이썬/Python) (0) | 2021.09.15 |
---|---|
[백준][동적 계획법1] 1463 . 1로 만들기(파이썬/Python) (0) | 2021.09.15 |
[백준][동적 계획법1] 1932. 정수 삼각형(파이썬/Python) (0) | 2021.09.13 |
[백준][동적 계획법1] 1149. RGB거리(파이썬/Python) (0) | 2021.09.13 |
[백준][백트래킹] 14888. 연산자 끼워넣기(파이썬/Python) (0) | 2021.09.12 |