이번 문제는 다이나믹 프로그래밍으로 해결하였다. 접근 방법은 수열을 순회하며 현재 수보다 이전에 있는 수 중에 더 큰 수가 있을 경우 dp배열의 현재 위치를 갱신하는 방식이다. 점화식은 dp[i]=max(dp[i], dp[j]+1)가 된다.
n=int(input())
a=list(map(int, input().split()))
dp=[1]*n
for i in range(n):
for j in range(i):
if a[j]>a[i]:
dp[i]=max(dp[i], dp[j]+1)
print(max(dp))