Algorithm/BOJ
[백준] 2352번 - 반도체 설계 (파이썬)
_temp
2022. 2. 18. 10:36
# 반도체 설계
import sys
import bisect
input = sys.stdin.readline
N = int(input())
port = list(map(int, input().split()))
result = [port[0]]
for x in range(1, N):
if port[x] > result[-1]:
result.append(port[x])
else:
index = bisect.bisect_left(result, port[x])
result[index] = port[x]
print(len(result))
이진탐색, bisec
1. 입력을 받고 port의 첫번째 값을 result에 추가
2. 남은 port의 값중에서
- result의 마지막 값보다 크면 append
- result의 마지막 값보다 작으면 bisect_left로 들어갈 index를 구해서 값 교체
3. result의 길이 출력
문제만 다르지 가장 긴 증가하는 부분 수열 로직과 똑같이 구현하면 된다.