반응형
https://www.acmicpc.net/problem/11054
자세한 설명은 주석으로 했다.
#include <cstdio>
int arr[1003];
int d[1003][2]; // 0: inc, 1: dec
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d ",&arr[i]);
}
for (int i = 0; i < n; i++){
// 가장긴 증가하는 부분수열
for (int j = 0; j < i; j++) {
if (arr[i] > arr[j] && d[i][0] < d[j][0] + 1) {
d[i][0] = d[j][0] + 1;
}
}
// 뒤부터 증가하는 부분수열
for (int j = 0; j < i; j++) {
if (arr[n-i-1] > arr[n-j-1] && d[n-i-1][1] < d[n-j-1][1] + 1) {
d[n-i-1][1] = d[n-j-1][1] + 1;
}
}
}
int maxmax = 0;
for (int i = 0 ; i < n; i++) {
if (maxmax < d[i][0]+ d[i][1]) {
maxmax = d[i][0] + d[i][1];
}
}
printf("%d\n", maxmax+1);
}
'Study > algorithms' 카테고리의 다른 글
[백준] 1541. 잃어버린 괄호 (0) | 2020.02.11 |
---|---|
[백준] 2565 전깃줄 (0) | 2020.02.08 |
[백준] 2748 피보나치 수 2 (0) | 2020.02.03 |
[백준] 14888 연산자 끼워넣기 (0) | 2020.01.29 |
[백준] 9663 N-Queen (0) | 2020.01.28 |