‡ CODING TEST STUDY ‡/º 백준

[백준 1912번 C++] 연속합

Trudy | 송연 2023. 10. 8. 02:06

1912번: 연속합 (acmicpc.net)

 

1912번: 연속합

첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net


[백준/BOJ] 1912번 연속합 (C/C++) (tistory.com)

 

[백준/BOJ] 1912번 연속합 (C/C++)

백준 온라인 저지(BOJ) 1912번 연속합 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다

rightbellboy.tistory.com

- 동적 계획법 = 기억하며 풀기 

- n번까지의 연속합의 최대값은 [n-1번까지의 최대값 + n번 값] or [n번 값] 둘 중 큰 값이다.

 

 

 

 


#include <iostream>
using namespace std;

#define max(x,y) x > y ? x : y

int main() {
	int n;
	int arr[100000];
	int dp[100000];
	cin >>  n;
	
	for (int i = 0; i < n; ++i) {
		cin >> arr[i];
	}

	int ret = arr[0];
	dp[0] = arr[0];

	for (int i = 1; i < n; ++i) {
		dp[i] = max(dp[i - 1] + arr[i], arr[i]);
		ret = max(dp[i], ret);
	}

	cout << ret << "\n";

	return 0;
}