알고리즘

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

데메즈 2022. 12. 25. 15:57
728x90
반응형

https://www.acmicpc.net/problem/1912

1912번: 연속합

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

www.acmicpc.net

dp배열은 자신의 값으로 초기화해준다
그리고 자신의 왼쪽 dp배열에 자신의 합을더한것 과 자신의 dp배열의 크기를 비교해서 큰 값을 넣어준다

#include <bits/stdc++.h>

using namespace std;
int n;
int dp[100001] = {0}, a[100001] ={0};

int main(void) {
    cin >> n;

    for(int i=1; i<=n; i++){
        cin >> a[i];
        dp[i] = a[i];
    }

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

    int result =dp[1];
    for(int i=1; i<=n; i++){
        result = max(result, dp[i]);
    }
    cout << result << endl;

    return 0;
}
728x90
반응형