
다이나믹프로그래밍 문제를 풀 때는 딱 3가지만 생각한다.
n = int(input())
data = [int(input()) for _ in range(n)]
dp = [0]*(n+1)
dp[0] = data[0]
dp[1] = data[0] + data[1]
dp[2] = max(dp[1], data[0]+data[2], data[2]+data[1])
for i in range(3,n):
dp[i] = max(dp[i-3]+data[i-1]+data[i], dp[i-2]+data[i], dp[i-1])
# print(dp)
print(dp[n-1])
이렇게 코드가 해피엔딩으로 제출 끝일 줄 알았는데 계속 90%대에서 런타임에러(인덱스 에러)가 남 ㅠㅠ.
결국 data값을 입력받는 부분을 참고해서 바꿔줬더니 정답이다.
아마 data의 크기가 사전에 정의되지 않아서 그런가보다.
n = int(input())
data=[0]*10000
for i in range(n):
data[i]=int(input())
dp = [0]*10000