BOJ 11053번 가장 긴 증가하는 부분 수열

|
package BOJ.DP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

/**
 * BOJ 11053
 * 가장 긴 증가하는 부분 수열
 * https://www.acmicpc.net/problem/11053
 */
public class BOJ_11053 {

    private static int[] answer;
    private static int[] arr;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[] num = Arrays.stream(br.readLine().split("\\s")).mapToInt(Integer::parseInt).toArray();
        // D(i) : A[1]... A[i] 수열에서 A[i]를 마지막으로 하는 가장 긴 증가하는 수열의 길이
        // D(i) = max(D[j]) + 1 ( j<i, A[j] < A[i] )
        answer = new int[n];
        solve(num);
        System.out.println(Arrays.stream(answer).max().getAsInt());
    }

    private static void solve(int[] num) {
        for(int i=0; i< answer.length; i++){
            answer[i] = 1;
            for(int j=0; j<i; j++) {
                if(num[j] < num[i] && answer[i] < answer[j]+1){
                    answer[i] = answer[j] + 1;
                }
            }
        }
    }


}