백준

백준 1912 연속합, c++

2024. 3. 10. 21:27

 

 

 

처음 작성한 코드는 다음과 같다.

#include <iostream>
using namespace std;

int main(){
    int n;
    cin >> n;
    
    int arr[n+1];
    for(int i=1; i<=n; i++)
        cin >> arr[i];
    
    int dp[n+1];
    int maxsum = -1001;
    dp[1] = arr[1];
    for(int i=2; i<=n; i++){
        if( dp[i-1] < (dp[i-1]+arr[i]))
            dp[i] = dp[i-1]+arr[i];
        else 
            dp[i] = dp[i-1];
    }
    
    cout << dp[n];
    return 0;
}

 

 

 

다시 작성한 코드는 다음과 같다.

위에서 maxsum 변수선언만 하고 사용하진 않았는데,

사용하는 방식으로 수정했더니 됐다.

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int n;
    cin >> n;
    
    int arr[n+1];
    for(int i=1; i<=n; i++)
        cin >> arr[i];
    
    int dp[n+1];
    int maxsum = arr[1];
    dp[1] = arr[1];
    for(int i=2; i<=n; i++){
        dp[i] = max(arr[i], dp[i-1]+arr[i]);
        if( dp[i] > maxsum )
            maxsum = dp[i];
    }
    
    cout << maxsum;
    return 0;
}

 

 

 

 

 

'백준' 카테고리의 다른 글

백준 11048 이동하기 c++  (0) 2024.03.11
백준 9095 1, 2, 3 더하기 c++  (0) 2024.03.11
백준 11727 2xn 타일링 2, c++  (0) 2024.03.10
백준 2579 계단 오르기, c++  (0) 2024.03.09
백준 1965 상자넣기, c++  (0) 2024.03.09