https://school.programmers.co.kr/learn/courses/30/lessons/161988

1) 코드
def solution(sequence):
answer = -1e9
N = len(sequence)
## 1, -1, 1, -1을 반복
dp1 = [0]*N
dp1[0] = sequence[0]
## -1, 1, -1, 1을 반복
dp2 = [0]*N
dp2[0] = -sequence[0]
for i in range(1, N):
if i % 2 == 0:
dp1[i] = max(dp1[i-1]+sequence[i], sequence[i])
else:
dp1[i] = max(dp1[i-1]-sequence[i], -sequence[i])
for i in range(1, N):
if i % 2 == 1:
dp2[i] = max(dp2[i - 1] + sequence[i], sequence[i])
else:
dp2[i] = max(dp2[i - 1] - sequence[i], -sequence[i])
answer = max(answer, max(dp1))
answer = max(answer, max(dp2))
return answer
2) 해설