백준 문제 링크
가장 긴 증가하는 부분 수열
- 수열은 1개 이상 선택할 수 있으므로
DP = [1] * N 으로 만든다.- 조건은 다음과 같다.
- for i in range( 1, N ):
- for j in range( i ):
- if data[i] > data[j]:
- DP[i] = max(DP[i], DP[j] + 1)
- 수열이 [10, 30, 20, 30]이 있을 때,
DP = [1, 1, 1, 1] 에서
DP = [1, 2, 2, 3]으로 바뀐다.- DP의 최댓값을 출력하면 끝!
N = int(input())
data = list(map(int, input().split()))
DP = [1] * N
for i in range(1, N):
for j in range(i):
if data[i] > data[j]:
DP[i] = max(DP[i], DP[j] + 1)
print(max(DP))