알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 연속합(1912)

HRuler 2023. 5. 19. 15:29

1. 문제

https://www.acmicpc.net/problem/1912

 

1912번: 연속합

첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# n : 주어지는 정수 수
n = int(input())

# nList : 정수 리스트
nList = list(map(int, input().split()))

dp = [0 for i in range(n)]
dp[0] = nList[0]
for i in range(1, n):
    dp[i] = max(dp[i-1] + nList[i], nList[i])
print(max(dp))

3. FeedBack

 - 이번 연속합 문제는 다이나믹 프로그래밍을 이용하여 해결하는 코딩테스트로, 역시 문제 해결의 핵심은 점화식을 세우는 것이였다.

 지난 문제보다는 점화식을 이해하고 세우는데는 큰 어려움은 없었지만, 역시나 DP Programming은 다른 알고리즘보다 난이도가 있다.