-
1912 - 연속합Programming/BackJoon 2023. 3. 15. 14:48728x90
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)
'Programming > BackJoon' 카테고리의 다른 글
1699 - 제곱수의 합 (0) 2023.03.17 2579 - 계단 오르기 (0) 2023.03.16 1966 - 프린터 큐 (1) 2023.03.15 2156 - 포도주 시식 (0) 2023.03.14 9465 - 스티커 (0) 2023.03.14