문제풀이/백준(Boj) 문제풀이

[백준][동적 계획법1] 11053. 가장 긴 증가하는 부분 수열LIS(파이썬/Python)

얄루몬 2021. 9. 15. 17:51

#11053

import sys
input = sys.stdin.readline

n = int(input())
a_list = list(map(int,input().split()))

#DP를 위한 1차원 DP테이블 초기화
dp = [1]*n

#가장 긴 증가하는 부분 수열(LIS) 알고리즘 수행.
for i in range(1,n):
    for j in range(0,i):
        if a_list[j] < a_list[i]:
            dp[i] = max(dp[i],dp[j] +1 )# 1 
print(max(dp))

# 1 DP의 경우 중복된 함수를 불러서 쓰는 것 대신 쓴 값을 저장해서 쓰는 방식이기 때문에 이를 위해서 이미 쓴 값인지를 확인