문제.
풀이.
이분 탐색을 이용하여 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))
'프로그래밍 > 백준' 카테고리의 다른 글
백준 7579 앱 - 파이썬 (0) | 2021.07.27 |
---|---|
백준 2580 스도쿠 - 파이썬 (2) | 2021.07.26 |
백준 2004 조합 0의 개수 - 파이썬 (0) | 2021.07.26 |
백준 1504 특정 최단 경로 - 파이썬 (0) | 2021.07.23 |
백준 1753 최단경로 - 파이썬 (0) | 2021.07.23 |