ps
BOJ 2352(반도체 설계)풀이
KWG07(joseph0528)
2021. 1. 23. 23:32
반응형
solved.ac 티어 : 골드 3
2352번: 반도체 설계
첫째 줄에 정수 n(1 ≤ n ≤ 40,000)이 주어진다. 다음 줄에는 차례로 1번 포트와 연결되어야 하는 포트 번호, 2번 포트와 연결되어야 하는 포트 번호, …, n번 포트와 연결되어야 하는 포트 번호가 주
www.acmicpc.net
이문제는 연결선이 서로 꼬이지(겹치지, 교차하지) 않도록 하면서 나올 수 있는 최대 개수를 구하는 것이다. 이때 이문제에서 꼬이지 않게 하려면 i번째의 값보다 i+1번째 값이 더 커야 된다. 즉 이문제는 LIS(최장 증가 부분 수열)이라는 거다.
그러므로 이분탐색 LIS를 구해주면 된다.
import sys
sys.setrecursionlimit(1000001)
a=int(input())
l=list(map(int,input().split()))
t=[0]
def lower_bound(n):
start=0
end=len(t)-1
while start < end:
m=(start+end)//2
if t[m]<n:
start=m+1
else:
end=m
return end
for x in range(a):
if t[len(t)-1] < l[x]:
t.append(l[x])
else:
t[lower_bound(l[x])]=l[x]
print(len(t)-1)
반응형