- "dy[i] : i번째 수로 만들 수 있는 가장 긴 증가 수열" 원리를 사용하는 동적 계획법 기초 문제
- 주의할 점은 수열의 갯수가 하나가 들어오면, 1을 출력하도록 처리해야 한다. 이유는 LIS 알고리즘이 수열의 두번째 인자부터 시작하기 때문
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int answer = 0;
int[] arr = new int[n];
int[] dy = new int[n];
for(int i=0; i<n; ++i)
arr[i] = sc.nextInt();
dy[0] = 1;
for(int i=1; i<arr.length; ++i){
int max = 0;
for(int j=i-1; j>=0; j--){
if(arr[i] > arr[j] && dy[j] > max)
max = dy[j];
}
dy[i] = max + 1;
answer = Math.max(dy[i], answer);
}
if(n==1)
System.out.println(1);
else
System.out.println(answer);
}
}