#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의 경우 중복된 함수를 불러서 쓰는 것 대신 쓴 값을 저장해서 쓰는 방식이기 때문에 이를 위해서 이미 쓴 값인지를 확인
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][동적 계획법1] 11054. 가장 긴 바이토닉 부분 수열 (파이썬/Python) (0) | 2021.09.17 |
---|---|
[백준][동적 계획법1] 2565 . 전깃줄 (파이썬/Python) (0) | 2021.09.16 |
[백준][동적 계획법1] 2156 . 포도주 시식(파이썬/Python) (0) | 2021.09.15 |
[백준][동적 계획법1] 1463 . 1로 만들기(파이썬/Python) (0) | 2021.09.15 |
[백준][동적 계획법1] 2579. 계단 오르기(파이썬/Python) (0) | 2021.09.15 |