알고리즘 공부/백준
(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은 다른 알고리즘보다 난이도가 있다.