728x90
import java.util.Scanner;
public class BJ11054 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
// 배열 입력받기
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
// 증가 수열
int[] up = new int[N];
for (int i = 0; i < N; i++) {
up[i] = 1;
for (int j = 0; j < i; j++) {
if (arr[j] < arr[i]) {
up[i] = Math.max(up[i], up[j] + 1);
}
}
}
// 감소 수열
int[] down = new int[N];
for (int i = N - 1; i >= 0; i--) {
down[i] = 1;
for (int j = N - 1; j > i; j--) {
if (arr[j] < arr[i]) {
down[i] = Math.max(down[i], down[j] + 1); // down 배열로 갱신
}
}
}
// 결과값 계산
int max_length = 0;
for (int i = 0; i < N; i++) {
max_length = Math.max(max_length, up[i] + down[i] - 1);
}
System.out.println(max_length);
}
}
어떻게 오르내리락을 계산하지 생각하다가 처음에는 1개에 다 만들어보려 했으나 역순을 세기가 어려워 두개를 분리하였다.
728x90
'백준' 카테고리의 다른 글
백준 15666 - Java (0) | 2024.11.18 |
---|---|
백준 15654 - Java (0) | 2024.11.17 |
백준 2110 - Java (0) | 2024.11.14 |
백준 11403 - Java (0) | 2024.11.13 |
백준 3085 - Java (0) | 2024.11.12 |