본문 바로가기

취준/백준

[백준][Python][11722][DP]가장 긴 감소하는 부분 수열

문제 : https://www.acmicpc.net/problem/11722

 

11722번: 가장 긴 감소하는 부분 수열

수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10}  이고, 길이는 3이다.

www.acmicpc.net

2020/02/19 - [취준/백준] - [백준][Python][11053][DP]가장 긴 증가하는 부분 수열

불러오는 중입니다...

이 문제에서 배열만 거꾸로 돌면된다.

import sys

n = int(sys.stdin.readline())

line = [int(i) for i in sys.stdin.readline().rstrip().split()]

dp = [0] * n

if n ==1:
    print(1)
    sys.exit()


for i in range(n-1,-1,-1):
    dp[i] = 1
    for j in range(n-1,i-1,-1):
        if line[i]>line[j] and dp[i] < dp[j]+1:
            dp[i] =  dp[j]+1



print(max(dp))