반응형
[ Contents ]
1. 문제 (링크 참조)
1912번: 연속합
첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.
www.acmicpc.net
2. 문제 풀이
연속된 수들의 합 중 가장 큰 값을 출력하는 문제입니다.
2022.02.12 - [Algorithm] - [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP)
[Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP)
[ Contents ] 1. 동적 프로그래밍(Dynamic Programming, 동적계획법) 동적계획법(Dynamic programming, DP): 작은 문제들에 대한 결과를 배열(리스트)에 저장하고, 이를 이용해서 입력 크기가 더 큰 문제를 점진..
star7sss.tistory.com
DP문제로, 이전 값과 더한 걸 비교해서 더 큰 걸로 갱신합니다.
sum[i] = max(sum[i], sum[i-1]+sum[i])
단순히 음수를 만나기 전까지만 더하면 답을 찾지 못합니다. 음수를 만나더라도 그 다음에 큰 수가 있으면, 해당 연속합이 더 크기 때문입니다.
위 점화식대로 갱신하면, 연속합이 i번째 수보다 작을 때까지 구합니다.
3. 코드
import sys
input = sys.stdin.readline
#입력
N = int(input())
cost = list(map(int, input().split()))
#DP
for i in range(1, N):
# i번째 수보다 연속합이 크면 갱신
cost[i] = max(cost[i], cost[i-1]+cost[i])
print(max(cost))
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 1010 다리 놓기 - 파이썬(Python) (0) | 2022.04.27 |
---|---|
[동적계획법/DP] 백준 1932 정수 삼각형 - 파이썬(Python) (0) | 2022.04.26 |
[동적계획법/DP] 백준 1149 RGB거리 - 파이썬(Python) (0) | 2022.04.24 |
[구현/수학] 백준 1402 아무래도이문제는A번난이도인것같다 - 파이썬(Python) (0) | 2022.04.23 |
[구현/수학] 백준 11816 8진수, 10진수, 16진수 - 파이썬(Python) (0) | 2022.04.22 |
댓글