https://www.acmicpc.net/problem/11055
1. 난이도 실버2 (🥈)
2. 문제 해결 방법
가장 긴 증가하는 부분 수열과 비슷한 문제다.
증가하고 있을 경우 max(본인이 가지고 있는 누적합, 그 전 원소의 누적합 + 본인의 값)를 출력하면 되고,
감소하고 있을 경우 max(본인이 가지고 있는 누적합, 본인의 값)을 출력하면 된다.
감소하고 있을 경우를 고려하지 않고 제출해서 2트만에 맞았다.
3. 내가 작성한 코드
n = int(input())
num = list(map(int, input().split()))
dp = [0] * n
dp[0] = num[0]
for i in range(n):
for j in range(i):
if num[i] > num[j]:
dp[i] = max(dp[i], dp[j] + num[i])
else:
dp[i] = max(num[i],dp[i])
print(max(dp))
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 2670번 연속부분최대곱(python)(dp) (0) | 2023.03.01 |
---|---|
[백준] 2407번 조합(python)(dp) (0) | 2023.03.01 |
[백준] 11053번 가장 긴 증가하는 부분 수열(python)(dp) (0) | 2023.03.01 |
[백준] 2573번 빙산(python) (1) | 2023.02.27 |
[백준] 13549번 숨바꼭질3(python) (0) | 2023.02.27 |
댓글