본문으로 바로가기

13398 연속합 2

category ps/다이나믹 프로그래밍 2021. 9. 26. 16:41

연속합 2 (13398)

 

풀이코드

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// 13398 연속합 2

const int MAX = 100000;

int n;
int A[MAX + 1];
int cache[MAX + 1];
int cache2[MAX + 1];
int max(int a, int b){ return a > b ? a : b; }

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr); 
	cout.tie(nullptr); 
	
    cin >> n;
	
    for(int i = 1; i <= n; i++){
        cin >> A[i];
    }
    
    cache[1] = A[1];
    cache2[1] = A[n];
	
	for(int i = 2; i <= n; i++){
		if(A[i] > cache[i - 1] + A[i]){
			cache[i] = A[i];
		}
		else{
			cache[i] = cache[i - 1] + A[i];
		}
    }
	
	for (int i = n; i>=1; i--) {
		cache2[i] = A[i];
        if (i == n) continue;
        if (cache2[i] < cache2[i+1] + A[i]) {
            cache2[i] = cache2[i+1] + A[i];
        }
    }
	
	
	int maxSum = cache[1];
	
	for(int i = 2; i <= n; i++){
		maxSum = maxSum > cache[i] ? maxSum : cache[i];
	}
	
	for(int i = 2; i < n; i++){
		maxSum = maxSum > cache[i - 1] + cache2[i + 1] ? maxSum : cache[i - 1] + cache2[i + 1];
	}
	
	cout << maxSum << '\n';
	
	

}

 

해설


적용한 레시피 / 방법론 + 접근법

1

풀이

1

아쉬웠던 부분 / 오답 원인 / 개선해야 할 점

1

 

반응형

'ps > 다이나믹 프로그래밍' 카테고리의 다른 글

3. Longest Substring Without Repeating Characters  (0) 2021.12.12
[dp] 1932 정수 삼각형  (0) 2021.09.26
[연속 dp] 1309 동물원  (0) 2021.09.26
[연속 dp] 1149 RGB 거리  (0) 2021.09.26
[dp] 15988 1,2,3 더하기 3  (0) 2021.09.26