앞에서부터, 각 값에 해당하는 최대 수열 위치를 저장하면 된다.
예를 들어, 50의 위치 최댓값을 고려할 때
1. 30의 3번 뒤
2. 25의 6번 뒤
당연히 2번을 선택해야 한다.
둘 다 값이 50보다 작기 때문에, 더 큰 수열 위치를 선택한 것이다.
num = int(input())
li = list(map(int, input().split()))
dp = [0] * len(li)
for i in range(num):
tmp = 0
for j in range(i):
if li[j] < li[i] and tmp < dp[j]:
tmp = dp[j]
dp[i] = tmp
dp[i] += 1 # self
print(max(dp))
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] [Python] 14496번 : 그대, 그머가 되어 (1) | 2021.05.20 |
---|---|
[BOJ] [Python] 18352번 : 특정 거리의 도시 찾기 (0) | 2021.05.18 |
[BOJ] [Python] 1932번 : 정수 삼각형 (0) | 2021.05.17 |
[BOJ] [Python] 2579번 : 계단 오르기 (2) | 2021.05.17 |
[BOJ] [Python] 9625번 : BABBA (0) | 2021.05.17 |