Coding test/Baekjoon

[백준][JAVA] 11053번: 가장 긴 증가하는 부분 수열

jepa 2023. 8. 1. 16:56
728x90
SMALL

재귀함수 어렵다...

import java.util.*;
import java.io.*;

class Main{
    static int[] arr;
    static int[] d;
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        d = new int[arr.length];
        
        for(int i = 0 ; i<arr.length ; i++){
            L(i);
        }
        int max = d[0];
        for(int i=1 ; i<d.length ; i++){
            max = Math.max(max, d[i]);
        }
        System.out.println(max);
    }
    
    public static int L(int n){
        if(d[n]==0){
            d[n]=1;
            for(int i = n-1 ; i>=0 ; i--){
                if(arr[i]<arr[n]) d[n] = Math.max(d[n], L(i)+1);
            }
        }
        return d[n];
    }
}
728x90
LIST