https://www.acmicpc.net/problem/11053
LIS 이용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] num = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++){
num[i] = Integer.parseInt(st.nextToken());
}
ArrayList<Integer> lis = new ArrayList<>();
for(int n:num){
int i = Collections.binarySearch(lis,n);
if(i<0) i = -i-1;
if(i==lis.size()){
lis.add(n);
}
else{
lis.set(i,n);
}
}
System.out.println(lis.size());
}
}