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

전깃줄이 꼬이지 않기 위해선 오름차순 순서대로 연결해야 한다.
입력된 케이스에서 가장 긴 증가하는 부분 수열을 구하고 그 외의 전깃줄을 잘라내면 된다.
LIS(가장 긴 증가하는 부분 수열), python
가장 긴 증가하는 부분 수열이란? 가장 긴 증가하는 부분 수열, LIS(Longest Increasing Subsequence) 란 오름차순으로 정렬된 부분 수열 중에 가장 긴 것을 말한다. 예를 들면 수열이 [10, 20, 5, 30, 15, 50]에서
aiden0413.tistory.com
import sys
from bisect import bisect_left
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
# 가장 긴 증가하는 부분 수열을 구하는 문제이다.
lis = []
for x in arr:
if not lis:
lis.append(x)
if lis[-1] < x:
lis.append(x)
else:
index = bisect_left(lis,x)
lis[index] = x
l = len(lis)
print(n - l)

'python' 카테고리의 다른 글
| [백준] 1194 달이 차오른다, 가자. , python (0) | 2025.10.08 |
|---|---|
| [백준] 11003 최솟값 찾기, python (2) | 2025.10.08 |
| [백준] 14658 하늘에서 별똥별이 빗발친다, python (0) | 2025.10.07 |
| [백준] 19238 스타트 택시, python (2) | 2025.10.06 |
| [백준] 17779 게리맨더링 2, python (0) | 2025.10.06 |