반응형
import sys
readline = sys.stdin.readline
read = sys.stdin.read
N = int(readline())
A = list(map(int, readline().split()))
A.insert(0,0)
answer = -(10**10)
d = [[answer] * (N+1) for _ in range(2)]
for k in range(1, N+1):
# 일반적인 누적합을 계산하는 부분
# 'd[0][k-1] + A[k]' 는 이전 누적합 중 최대값과 현재 값을 더했을 경우
d[0][k] = max(d[0][k-1] + A[k], A[k])
# 'd[0][k-1]' 는 지금 A[k] 를 누적합 계산에서 제외할 경우
# 'd[1][k-1] + A[k]' 는 이전에 특정 숫자를 누적합에서 제외한 값들 중 최대값에 현재 값을 더했을 경우
d[1][k] = max(d[0][k-1], d[1][k-1] + A[k])
answer = max(answer, max(d[0][k], d[1][k]))
print(answer)
반응형
'Develop > 코딩인터뷰' 카테고리의 다른 글
[코딩인터뷰] 백준 2110번 공유기 설치 (0) | 2021.03.30 |
---|---|
[코딩인터뷰] 백준 10986번 나머지 합 (0) | 2021.03.29 |
[코딩인터뷰] 백준 2616번 소형기관차 (0) | 2021.03.28 |
[코딩인터뷰] 백준 3020번 개똥벌레 (0) | 2021.03.28 |
[코딩인터뷰] 백준 16437번 (0) | 2021.03.27 |
꾸준히 노력하는 개발자 "김예건" 입니다.