문제풀이/백준(Boj) 문제풀이

[백준][동적 계획법1] 2156 . 포도주 시식(파이썬/Python)

얄루몬 2021. 9. 15. 17:22

#2156

import sys
input = sys.stdin.readline

n = int(input())
a = [0]*10000
for i in range(n):
    a[i] = int(input())

dp = [0]*10000
dp[0] = a[0]
dp[1] = a[0]+a[1]
dp[2] = max(a[0]+a[2],a[1]+a[2],dp[1]) #dp[1] == a[0]+a[1]

for i in range(3,n):
    dp[i] = max(a[i]+dp[i-2], a[i]+a[i-1]+dp[i-3],dp[i-1])

print(max(dp))
#2156

import sys
input = sys.stdin.readline

n = int(input())

a = [0 for i in range(10000)]
#dp 테이블 초기화
dp = [0 for i in range(10000)]

for i in range(n):
    a[i] = int(input())

dp[0] = a[0]
dp[1] = a[0]+a[1]
dp[2] = max(a[0]+a[2],a[1]+a[2],dp[1]) #dp[1] == a[0]+a[1]

for i in range(3,n):
    dp[i] = max(a[i]+dp[i-2], a[i]+a[i-1]+dp[i-3],dp[i-1])

print(max(dp))

# DP테이블, 포도주의 수 초기화 방법의 차이임.