전공/백준
1912
yha97
2022. 11. 19. 00:31
날짜 : 2022. 11. 18
사용 언어 : python
문제
코드
import sys
n = int(sys.stdin.readline())
a = list(map(int, sys.stdin.readline().split()))
dp = [a[0]]
for i in range(1, n):
# 현재 수열의 수와 합했을 때의 수와 비교(더했을 때 감소하는 경우 또한 저장)
# 감소하는 경우는 max를 통해 자연스럽게 필터링
dp.append(max(dp[i - 1] + a[i], a[i]))
print(max(dp))
#print(dp)
풀이
- 해당 수에 대해서 일관적으로 더해 나감으로써 비교해 나가는 문제였다.
알게된 점
- 현재 수열의 수와 합했을 때의 수와 비교한다는 아이디어가 잘 떠오르지 않았던 것 같다.
참고 사이트
- https://pacific-ocean.tistory.com/96
백준 알고리즘 1912번(python 파이썬)
문제 링크: https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작
pacific-ocean.tistory.com