코테 노트/백준

백준 2565 전깃줄 Python3

화요밍 2021. 8. 9. 00:42
728x90
반응형

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

 

2565번: 전깃줄

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

www.acmicpc.net

 

최종 코드

 

GitHub - hwayeon351/BEAKJOON-Algorithms: 백준 알고리즘 소스 코드 모음

백준 알고리즘 소스 코드 모음. Contribute to hwayeon351/BEAKJOON-Algorithms development by creating an account on GitHub.

github.com

n = int(input())
lines = []
for _ in range(n):
    lines.append(list(map(int, input().split())))

lines.sort(key = lambda x:x[0])
dp = [1]*n
for i in range(1, n):
    for j in range(i):
        if lines[i][1] > lines[j][1] and dp[i] < dp[j]+1:
            dp[i] = dp[j]+1
print(n-max(dp))

풀이 과정

n = int(input())
lines = []
for _ in range(n):
    lines.append(list(map(int, input().split())))
#A 전봇대 기준으로 전깃줄 오름차순으로 정렬 -> T(n) = nlogn
lines.sort(key = lambda x:x[0])
#0~i번까지의 전깃줄 중 i와 교차하지 않고 연결할 수 있는 전깃줄의 개수를 메모이제이션
dp = [1]*n
for i in range(1, n):
    for j in range(i):
        if lines[i][1] > lines[j][1] and dp[i] < dp[j]+1:
            dp[i] = dp[j]+1
#교차하지 않고 연결할 수 있는 전깃줄 개수의 최댓값을 전체 전깃줄에서 뺴주는 것이 없애야하는 전깃줄의 최소 개수이다
print(n-max(dp))
#시간복잡도 = O(n^2), 공간복잡도 = O(n)
728x90
반응형

'코테 노트 > 백준' 카테고리의 다른 글

백준 21610 마법사 상어와 비바라기 C++  (0) 2021.08.10
백준 1309 동물원 Python3  (0) 2021.08.09
백준 17144 미세먼지 안녕! C++  (0) 2021.08.08
백준 16234 인구 이동 C++  (0) 2021.08.05
백준 1890 점프 Python3  (0) 2021.08.05