프로그래밍/백준
백준 12015 가장 긴 증가하는 부분 수열2 - 파이썬
터렛짓는다
2021. 7. 26. 16:39
문제.
풀이.
이분 탐색을 이용하여 dp배열의 최댓값과 비교하여 큰 값이면 오른쪽에, 낮은 값이면 dp배열의 값에서 이분 탐색을 이용하여 해당 값이 들어갈 위치를 결정하여 dp 배열에 넣고 dp 배열의 길이를 출력한다.
소스코드
import sys
from bisect import bisect_left
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
dp = []
for i in arr:
k = bisect_left(dp, i)
if len(dp) <= k:
dp.append(i)
else:
dp[k] = i
print(len(dp))