import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
import java.util.Comparator;
import java.util.Arrays;
public class main {
static int[][] arr;
static int[] dp;
static int N;
static int count=0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
N = Integer.parseInt(br.readLine());
arr = new int[N+1][2];
dp = new int[N+1];
StringTokenizer st;
for(int i=1;i<=N;i++) {
st = new StringTokenizer(br.readLine()," ");
arr[i][0]=Integer.parseInt(st.nextToken());
arr[i][1]=Integer.parseInt(st.nextToken());
}
Arrays.sort(arr,new Comparator<int[]>(){
@Override
public int compare(int[] o1, int[] o2) {
return o1[0]-o2[0];
}
});
for(int i=1; i<=N; i++) {
dp[i]=1;
for(int j=1; j<=i; j++) {
if(arr[i][1]>arr[j][1]) {
dp[i] = Math.max(dp[i],dp[j]+1);
}
}
}
int max=Integer.MIN_VALUE;
for(int i=1;i<=N;i++) {
max=Math.max(max,dp[i]);
}
bw.write(N-max+"\n");
bw.flush();
bw.close();
}
}
아,,, lcs 다 다시풀어봐야겠다,,
정렬해줌으로써 arr[][1] 값만 비교해주면된다 ,, [i][1] 보다 작은 애들이 겹치는 애들이라 제거해줘야 한다.
여기서 요구하는 건 최소값인데 max를 구했으므로 N에서 빼준다.
여집합 마냥,, ,,
dp 내게왕이ㅏㅏ아악
'NOTE > BAEKJOON' 카테고리의 다른 글
9084 동전 (0) | 2022.10.08 |
---|---|
14502 연구소 (1) | 2022.09.30 |
11054 가장 긴 바이토닉 부분 수열 (0) | 2022.03.21 |
11053 가장 긴 증가하는 부분 (0) | 2022.03.21 |
2156 포도주 시식 (0) | 2022.03.21 |