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

+ Recent posts