백준 10211번 Maximum Subarray

DARTZ·2022년 5월 19일
0

알고리즘

목록 보기
65/135
import sys
sys.stdin = open('input.txt', 'rt')
input = sys.stdin.readline

T = int(input())

for _ in range(T):
    N = int(input())
    arr = list(map(int, input().split()))
    dp = [0] * N

    dp[0] = arr[0]

    for a in range(1, N):
        dp[a] = max(dp[a-1]+arr[a], arr[a])

    print(max(dp))

dp는 항상 아이디어를 떠올리는게 어려운 것 같다.. 사실 그게 dp의 전부긴 하지만..
이 문제 같은 경우에는 dp라는 리스트를 만들어서 누적합을 더해가고 계산할 값이 답겨져 있는 arr리스트의 현재 값과 비교해서 max 값을 넣어주면 되는 문제이다.
부분합이 최대가 되야한다. 계속 값을 더해가면서 현재 값과 비교하면 된다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글