반응형

 

📖 문제

 

📋 코드

import java.util.*;
public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int ans = 0;
		int n = sc.nextInt();
		int powerCord[][] = new int[n][2];
		int dp[] = new int[n];
		

		// 전깃줄 연결 정보
		for (int i = 0; i < n; i++) {
			powerCord[i][0] = sc.nextInt();
			powerCord[i][1] = sc.nextInt();
		}
		
		Arrays.sort(powerCord, (a,b)->{
			return a[0]-b[0];
		});
		

		// 증가
		for (int i = 0; i < n; i++) {
			int max = 0;
			for (int j = 0; j < i; j++) {
				if(powerCord[i][1] > powerCord[j][1]) {
					max = Math.max(max, dp[j]);
				}
			}
			dp[i] = max + 1;
		}
		for (int i = 0; i < n; i++) {
			ans = Math.max(dp[i], ans);
		}
		
		ans = n - ans;
		System.out.println(ans);
		
	}
}

👨🏻‍💻 결과

 

 

📕 풀이 방법

최장 증가수열의 길이가 교차하지 않는 전깃줄의 최대 개수입니다.

 

🔗 링크

https://www.acmicpc.net/problem/2565

 

2565번: 전깃줄

첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는

www.acmicpc.net

 

반응형

+ Recent posts