코딩하는 해맑은 거북이
[Python] 전깃줄 - 백준 본문
해당 글은 백준 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))
'코딩테스트' 카테고리의 다른 글
[Python] 제곱수의 합 - 백준 (DP) (0) | 2023.08.15 |
---|---|
[Python] 이진 검색 트리 - 백준 (0) | 2023.08.15 |
[Python] 색종이 만들기 - 백준 (분할정복) (0) | 2023.08.14 |
[Python] 동전 1 - 백준 (DP) (0) | 2023.08.13 |
[Python] 치킨 배달 - 백준 (0) | 2023.08.13 |
Comments