이런 류의 문제에 이젠 익숙해진 기분이다.
마찬가지로 n의 범위가 1000이하이니
n^2까지의 시간복잡도는 인정해준다.
# n 입력
n = int(input())
# a 입력
a = list(map(int, input().split()))
# dp 설계
dp = [
0 for _ in range(n)
]
# dp 초기설정
dp[0] = a[0]
# dp 채워넣기
for i in range(1, n):
# 최댓값 설정
M = 0
# 이전까지 돌면서
for j in range(i):
# 감소하는 수열 중 dp값이 가장 큰 것을 찾아
if a[j] > a[i] and dp[j] > M:
# 최댓값 갱신
M = dp[j]
# dp 넣어주기
dp[i] = M + a[i]
# 출력
print(max(dp))
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
[백준_9507] Generation of Tribbles python (0) | 2022.07.25 |
---|---|
[백준_9658] 돌게임 4 python (0) | 2022.07.24 |
[백준_2491] 수열 python (0) | 2022.07.22 |
[백준_11660] 구간 합 구하기 5 python (0) | 2022.07.21 |
[백준_9657] 돌게임 3 python (0) | 2022.07.20 |