AtCoder Beginner Contest 087 C - Candies【Python】

https://atcoder.jp/contests/abc087/tasks/arc090_a

AtCoder ProblemsのRecommendationで Difficulty: 312、Solve Probability: 55%でした。

愚直な解法

N = int(input())
A = []
for i in range(2):
    A.append(list(map(int, input().split())))

ans = 0

for i in range(N):
    temp_ans = 0
    temp_ans += sum(A[0][:i+1])
    temp_ans += sum(A[1][i:])
    ans = max(ans, temp_ans)
print(ans)

ユーザー解説の動的計画法を使った解法

https://blog.hamayanhamayan.com/entry/2018/01/28/225409

N = int(input())
A = []
for i in range(2):
    A.append(list(map(int, input().split())))

ans = 0
DP = []
for i in range(2):
    DP.append([0]*N)
DP[0][0] = A[0][0]
for y in range(2):
    for x in range(N):
        if y-1 >=0:
            DP[y][x] = max(DP[y][x], DP[y-1][x] + A[y][x])
        if x-1 >= 0:
            DP[y][x] = max(DP[y][x], DP[y][x-1] + A[y][x])
print(DP[1][N-1])