Programming/BackJoon
1912 - 연속합
홍열
2023. 3. 15. 14:48
728x90
1) 문제 설명
주어진 수들 가운데, 연속적으로 더했을때 가장 큰 수를 찾는 문제
전형적인 dp 문제
특정 위치에서 연속합은 내 앞에껄 가져와서 더하거나 혹은 나만 더하거나 이다.
dp[0]은 list[0]과 같고
dp[1] = max(dp[0] + list[1] , list[1])
dp[2] = max(dp[1] + list[2] , list[2])
점화식을 세워보면
dp[n] = max(dp[n-1] + list[n] , list[n]) 이다
2) 문제 풀이
import sys
n = int(input())
lst = list(map(int, sys.stdin.readline().split()))
dp = [0] * (n)
dp[0] = lst[0]
max_value = dp[0]
for i in range(1, n):
dp[i] = max(dp[i-1]+lst[i], lst[i])
max_value = max(dp[i], max_value)
print(max_value)