백준-1965-상자 넣기(LIS)
업데이트:
문제
풀이
-
문제조건 해석
대표적인 LIS(최장증가수열) 문제다. LIS 는 DP를 이용하여 해결한다.
-
알고리즘
단순 LIS 문제로, $N^2$에 해결 가능하다. $N\log{N}$에 해결하는 방법은 관련 블로그를 참고하자.
-
코드
n = int(input())
boxes = [int(_) for _ in input().split()]
dp = [1 for _ in range(n)]
# 최장증가수열 문제
# dp[i] : i에서 끝나는 최장증가수열
answer = 1
for i in range(0, n):
for j in range(0, i):
if boxes[i] > boxes[j] and dp[i] < dp[j]+1:
dp[i] = dp[j] + 1
if dp[i] > answer:
answer = dp[i]
print(answer)
댓글남기기