11054번 - 가장 긴 바이토닉 부분 수열
<코드>
#include <iostream>
#include <algorithm>
using namespace std;
int N;
int arr[1001] = { 0, };
int dp_In[1001] = { 0, };
int dp_De[1001] = { 0, };
int max_Value = 0;
int main() {
cin >> N;
for (int i = 1; i <= N; i++) {
cin >> arr[i];
}
for (int i = 1; i <= N; i++) { //증가하는 부분수열의 길이 구하기
dp_In[i] = 1;
for (int j = 1; j < i; j++) {
if (arr[j] < arr[i] && dp_In[i] < dp_In[j] + 1) dp_In[i] = dp_In[j] + 1;
}
}
for (int i = N; i >= 1; i--) { //감소하는 부분수열의 길이 구하기
dp_De[i] = 1;
for (int j = N; j > i; j--) {
if (arr[j] < arr[i] && dp_De[i] < dp_De[j] + 1) dp_De[i] = dp_De[j] + 1;
}
}
for (int i = 1; i <= N; i++) { //증감 부분수열의 합
arr[i] = dp_In[i] + dp_De[i];
if (max_Value < arr[i]) max_Value = arr[i]; //합의 최댓값
}
cout << max_Value - 1 << endl;
return 0;
}
'Baekjoon' 카테고리의 다른 글
[백준 DP] 1912번 - 연속합 (2) | 2022.11.25 |
---|---|
[백준 DP] 1699번 - 제곱수의 합 (0) | 2022.11.24 |
[백준 Java] 1759번 - 암호 만들기 (0) | 2022.08.22 |
[백준 - Java] 2529번 - 부등호 (0) | 2022.08.17 |
[백준 Java] 10808번 - 알파벳 개수 (0) | 2022.08.02 |