목차

     

     


     

     

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

     

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

     

    1912번: 연속합

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

    www.acmicpc.net


     

     

    해결전략

     

    DP

     


     

    코드

     

    #include <iostream>
    using namespace std;
    
    int a[100000];
    int dp[100000];
    
    int main() {
    	int n, ans;
    	scanf("%d", &n);
    	
    	for(int i=0; i<n; i++){
    		scanf("%d", &a[i]);
    	}
    	
    	ans=a[0];
    	
    	for(int i=0; i<n; i++)
    	{
    		dp[i]=a[i];
    		
    		if(i ==0) continue;
    		
    		if(dp[i]<dp[i-1]+a[i]){
    			dp[i]=dp[i-1]+a[i];
    		}
    		
    		if(dp[i]>ans) ans=dp[i];
    	}
    
    	printf("%d", ans);
    
    	return 0;
    }