본문 바로가기
Algorithms

백준 2565. 전깃줄

by Brian Go 2022. 7. 7.

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

 

2565번: 전깃줄

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

www.acmicpc.net

 

문제

 



해답

간단히 생각해봤을 때, 없애야 하는 전깃줄의 최소 개수 = 최장 길이 부분수열을 구성하기 위해서 배제되어야 하는 요인의 개수

라고 생각할 수 있다.

따라서 이중 배열로 이어져 있는 전깃줄을 받고, A나 B에 대해서 정렬을 한 후에, 다른 한 전봇대가 구성할 수 있는 가장 긴 증가하는 부분수열의 개수를 총 전깃줄의 개수에서 빼주면 된다.

n = int(input())
s = [[0, 0]] * (n+1)

for i in range(1, n+1):
	s[i] = list(map(int, input().split()))

dp = [ 0 for _ in range(n+1) ]
s.sort()

for i in range(1, n+1):
	for j in range(1, i+1):
		if s[i][1] > s[j][1] and dp[i] < dp[j]:
			dp[i] = dp[j]
	dp[i] += 1
print(n - max(dp))

 

'Algorithms' 카테고리의 다른 글

백준 12865. 평범한 배낭  (0) 2022.07.08
백준 9251. LCS  (0) 2022.07.07
백준 11054. 가장 긴 바이토닉 부분 수열  (0) 2022.07.04
백준 11053. 가장 긴 증가하는 부분 수열  (0) 2022.07.04
백준 2156. 포도주 시식  (0) 2022.07.04

댓글