파게로그
[백준 1912번] 연속합 본문
문제 링크: 1912번 연속합
https://www.acmicpc.net/problem/1912
partialSum
이 직전까지의 부분합보다 큰 경우에는 dp[i]
는 partialSum
이 될 것이고, 그렇지 않으면 dp[i]
는 dp[i-1]
과 같아야 한다. 하지만 partialSum
이 음수인 경우에는 지금까지의 부분합을 버리고 0으로 초기화하는 과정이 선행되어야 한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
/* input */
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] t = br.readLine().split(" ");
int[] arr = new int[n + 1];
for (int idx = 1; idx <= n; idx++)
arr[idx] = Integer.parseInt(t[idx - 1]);
int[] dp = new int[n + 1];
/* create dp */
int partialSum = arr[1];
dp[1] = arr[1];
for (int i = 2; i <= n; i++) {
if (partialSum < 0) partialSum = 0;
partialSum += arr[i];
if (partialSum > dp[i-1])
dp[i] = partialSum;
else
dp[i] = dp[i-1];
}
System.out.println(dp[n]);
}
}
'콤퓨타 왕왕기초 > PS' 카테고리의 다른 글
[백준 11049번] 행렬 곱셈 순서 (0) | 2020.12.18 |
---|---|
[백준 12865번] 평범한 배낭 (0) | 2020.12.14 |
[백준 2565번] 전깃줄 (0) | 2020.12.13 |
[백준 11053번] 가장 긴 증가하는 부분 수열 (0) | 2020.12.07 |
[백준 2156번] 포도주 시식 (0) | 2020.12.07 |
Comments