문제📖
풀이🙏
- dp 값을 갱신하기 위해 현재 위치에서 포도주를 마실 것인지 안마실것인지 상황을 구분한다.
1) 현재 위치 포도주를 안마시기
dp[i] = dp[i-1]
2) 전전 포도주를 안마시고 현재 위치 포도주 마시기
dp[i] = dp[i-3]+data[i-1]+data[i]
3) 전 포도주를 안마시고 현재 위치 포도주 마시기
dp[i] = data[2]+data[0]
- 이중 가장 큰 값을 선택하여 테이블을 갱신한다.
코드💻
data = [0]*10000
n = int(input())
for i in range(n):
data[i] = (int(input()))
dp = [0] * 10000
dp[0] = data[0]
dp[1] = data[0]+data[1]
dp[2] = max(dp[1], data[1]+data[2], data[2]+data[0])
for i in range(3, n):
dp[i] = max(dp[i-1], dp[i-3]+data[i-1]+data[i], dp[i-2]+data[i])
print(max(dp))