본문 바로가기

전깃줄 (2565) 본문

Algorithms/DP (Dynamic Programming)

전깃줄 (2565)

Louisus 2020. 5. 19. 00:44
728x90

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

lines =
sorted(lines, key=lambda x: x[0])

# LIS
result = [[] for _ in range(n)]
for i in range(n):
   
if i == 0:
        result[i].append(lines[i][
1])
   
else:
       
for j in range(0, i):
           
if result[j][-1] < lines[i][1]:
               
if len(result[i]) - 1 < len(result[j]):
                    result[i] = result[j] + [lines[i][
1]]
       
if not result[i]:
            result[i].append(lines[i][
1])
m =
0
for i in range(n):
    m =
max(m, len(result[i]))
print(n - m)

 

# 전봇대 기준으로 정렬 -> 전체 개수에서 오름차순 개수 빼기

'Algorithms > DP (Dynamic Programming)' 카테고리의 다른 글

가장 큰 증가 부분 수열 [11055] with 파이썬  (0) 2020.06.05
2차원 배열의 합 [2167] with 파이썬  (0) 2020.06.05
연속합 (1912)  (0) 2020.05.19
RGB 거리 (1149)  (0) 2020.05.19
파도반 수열 (9641)  (0) 2020.05.19
Comments