Algorithm/Dynamic Programming
[DP] 백준 11722번 “가장 긴 감소하는 부분 수열” Python 풀이
운호(Noah)
2024. 3. 21. 15:36
문제 링크
코드
import sys
n = int(sys.stdin.readline())
item = list(map(int, sys.stdin.readline().split()))
# 아이템 역순 정렬
item_reversed = item[::-1]
# DP 테이블 생성
dp = [1] * n
for i in range(n):
for j in range(i+1,n):
# 현재 위치의 값(item_reversed[i])보다 비교 대상(item_reversed[j])보다 크면,
# 증가하는 순서가 성립하므로 DP 테이블 업데이트
if (item_reversed[i] < item_reversed[j]):
dp[j] = max(dp[i]+1, dp[j])
print(max(dp))