https://www.acmicpc.net/problem/17216
17216번: 가장 큰 감소 부분 수열
수열 A가 주어졌을 때, 그 수열의 감소 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 8, 7, 3, 6, 5} 인 경우에 합이 가장 큰 감소 부분 수열
www.acmicpc.net
문제
아이디어
모든 경우를 계산하며, dp값으로 누적하면 되겠다고 생각했다.
풀이
위의 dp값중 가장 큰 값을 출력하면 정답이 된다.
코드
import sys
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
dp = arr[:]
for i in range(N):
for j in range(i):
if arr[j] > arr[i]:
dp[i] = max(dp[i], dp[j] + arr[i])
print(max(dp))
'알고리즘' 카테고리의 다른 글
[백준 파이썬] 2644 촌수계산 (1) | 2023.12.06 |
---|---|
[백준 파이썬] 12865 평범한 배낭 (1) | 2023.12.04 |
[백준 파이썬] 9465 스티커 (1) | 2023.11.29 |
[백준 파이썬] 13549 숨바꼭질 3 (0) | 2023.11.17 |
[백준 파이썬] 1991 트리순회 (0) | 2023.11.15 |