https://www.acmicpc.net/problem/9465
여기 설명이 잘 된 링크가 있어 첨부한다.
https://pacific-ocean.tistory.com/197
이는 위 링크의 코드
t = int(input())
for i in range(t):
s = []
n = int(input())
for k in range(2):
s.append(list(map(int, input().split())))
for j in range(1, n):
if j == 1:
s[0][j] += s[1][j - 1]
s[1][j] += s[0][j - 1]
else:
s[0][j] += max(s[1][j - 1], s[1][j - 2])
s[1][j] += max(s[0][j - 1], s[0][j - 2])
print(max(s[0][n - 1], s[1][n - 1]))
아래는 내 코드
t = int(input())
for _ in range(t):
s = []
n = int(input())
dp = [[0 for _ in range(n)] for _ in range(2)]
for k in range(2):
s.append(list(map(int, input().split())))
for j in range(n):
if j ==0:
dp[0][j] = s[0][j]
dp[1][j] = s[1][j]
elif j == 1:
dp[0][j] = dp[1][j-1]+s[0][j]
dp[1][j] = dp[0][j-1]+s[1][j]
else:
dp[0][j] = max(dp[1][j-1], dp[1][j-2])+s[0][j]
dp[1][j] = max(dp[0][j-1], dp[0][j-2])+s[1][j]
print(max(dp[0][n - 1], dp[1][n - 1]))