Python으로 구현한 1912번 연속합 문제 풀이입니다.
https://www.acmicpc.net/problem/1912
import sys
input = sys.stdin.readline
n = int(input())
data = list(map(int, input().split()))
dp = [i for i in data]
for i in range(1, n) :
dp[i] = max(dp[i], dp[i-1] + data[i])
print(max(dp))
1. 입력받은 데이터를 이루는 data 리스트를 통해 dp리스트을 추가로 정의한다.
2. 연속된 몇 개의 수를 선택해야하므로, 반복문을 통해 dp[i]와 dp[i-1]+data[i]를 비교하여 더 큰 값을 dp[i]에 갱신한다.
여기서 dp[i-1]은 이전에 갱신되었기 때문에 단순히 dp[i-1] + data[i]를 연산하여 해결할 수 있다.
3. 최종적으로 dp 리스트에서 가장 큰 값을 출력한다.
'백준(Python) 풀이 > 다이나믹 프로그래밍' 카테고리의 다른 글
백준(Python) 1699번 제곱수의 합 풀이 (0) | 2022.03.02 |
---|---|
백준(Python) 2579번 계단 오르기 풀이 (0) | 2022.03.02 |
백준(Python) 11054번 가장 긴 바이토닉 부분 수열 풀이 (0) | 2022.03.02 |
백준(Python) 11722번 가장 긴 감소하는 부분 수열 풀이 (0) | 2022.03.02 |
백준(Python) 11055번 가장 큰 증가 부분 수열 풀이 (0) | 2022.03.02 |