프로그래머스 연속 펄스 부분 수열의 합 c++
2023. 10. 26. 14:16ㆍ알고리즘
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long plusDp[500001];
long long minusDp[500001];
long long solution(vector<int> sequence) {
long long answer = 0;
vector<long long> plusSequence, minusSequence;
// 펄스 수열 두가지를 곱해서 두개의 수열을 만들었다
for (int i=0;i<sequence.size();i++){
if (i%2){
plusSequence.push_back(sequence[i]*(-1));
minusSequence.push_back(sequence[i]);
}
else {
plusSequence.push_back(sequence[i]);
minusSequence.push_back(sequence[i]*(-1));
}
}
// dp[i] = i번째까지 최대 펄스 수열
plusDp[0] = plusSequence[0], minusDp[0] = minusSequence[0];
for (int i=1;i<plusSequence.size();i++){
plusDp[i] = max(plusSequence[i], plusDp[i-1]+plusSequence[i]);
}
for (int i=1;i<minusSequence.size();i++){
minusDp[i] = max(minusSequence[i], minusDp[i-1]+minusSequence[i]);
}
for (int i=0;i<minusSequence.size();i++){
answer = max(answer, plusDp[i]);
}
for (int i=0;i<minusSequence.size();i++){
answer = max(answer, minusDp[i]);
}
return answer;
}
'알고리즘' 카테고리의 다른 글
프로그래머스 타겟넘버 c++ (0) | 2023.10.26 |
---|---|
프로그래머스 가장 먼 노드 c++ 그래프 탐색 (0) | 2023.10.25 |
프로그래머스 베스트 앨범 c++ map (0) | 2023.10.25 |
프로그래머스 완주하지 못한 선수 해시 (0) | 2023.10.25 |
프로그래머스 폰켓몬 c++ unordered_map 해시 (0) | 2023.10.25 |