백준

백준 11054 - java

으엉어엉 2024. 11. 15. 11:29
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