오늘 풀어볼 문제는 ⭐반도체 설계라는 문제이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
int[] binary = new int[n];
st = new StringTokenizer(br.readLine());
int len = 0;
for (int i = 0; i < n; i++) {
int value = Integer.parseInt(st.nextToken());
// lower_bound
int l = 0, r = len;
while (l < r) {
int m = (l + r) >>> 1;
if(binary[m] >= value)
r = m;
else
l = m + 1;
}
binary[l] = value;
if (l == len) len++; //⭐핵심코드!!⭐
}
System.out.println(len);
}
}
