PS/BOJ

1912

easy16 2022. 4. 25. 22:45

연속합

 

이전합+현재값(dp[1-i] + arr[i])이 음수가 되면, 현재값 dp[i]는 arr[i]가 된다.

 

작은 아이디어 하나면 끝

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static Integer[] arr;
	static Integer[] dp;

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());

		int N = Integer.parseInt(st.nextToken());
		arr = new Integer[N];
		dp = new Integer[N];

		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < N; ++i)
			arr[i] = Integer.parseInt(st.nextToken());

		dp[0] = arr[0];
		int max = dp[0];
		for (int i = 1; i < N; ++i) {
			dp[i] = arr[i];
			if (dp[i] + dp[i - 1] > 0)
				dp[i] = Math.max(dp[i], dp[i] + dp[i - 1]);
			max = Math.max(dp[i], max);
		}

		System.out.println(max);
		br.close();

	}

}

ex) 
10
2 1 -4 3 4 -4 6 5 -5 1
14