코딩하는 해맑은 거북이

[Python] 전깃줄 - 백준 본문

코딩테스트

[Python] 전깃줄 - 백준

#CJE 2023. 8. 15.
해당 글은 백준 2565번 문제 '전깃줄'을 다룬다.

문제

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

 

2565번: 전깃줄

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

www.acmicpc.net

 

설명

처음에는 해당 문제를 BFS로 모든 경우의 수를 구했었는데 시간초과가 떴다.

찾아본 결과 LIS(Longest Increasing Subsequence)와 DP를 합쳐서 해결하면 풀 수 있다고 한다..!

* 참고한 풀이영상 : https://www.youtube.com/watch?v=wn2dyWt9ml0 

 

코드

import sys
input = sys.stdin.readline

n = int(input())
line = []
for _ in range(n):
    a, b = map(int, input().split())
    line.append((a, b))
line.sort()

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

     

 

 

Comments