1912번: 연속합백준/문제2023. 9. 11. 12:37
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1912
언어 : Kotlin
문제 설명 :
n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다.
예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다.
- 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.
- 첫째 줄에 답을 출력한다.
제한 사항 :
- 시간 제한 : 1초 (추가 시간 없음)
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
10 10 -4 3 1 5 6 -35 12 21 -1 |
33 |
10 2 1 -4 3 4 -4 6 5 -5 1 |
14 |
5 -1 -2 -3 -4 -5 |
-1 |
풀이 :
import java.io.BufferedWriter
import java.io.OutputStreamWriter
import kotlin.math.max
fun main() = with(System.`in`.bufferedReader()) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = readLine().toInt()
val arr = readLine().split(" ").map { it.toInt() }
val dp = Array(n) { 0 }
var max = arr[0]
dp[0] = arr[0]
for (i in 1 until n) {
dp[i] = max(dp[i - 1] + arr[i], arr[i])
max = max(max, dp[i])
}
bw.write("$max")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
1302번: 베스트셀러 (0) | 2023.09.13 |
---|---|
10820번: 문자열 분석 (0) | 2023.09.12 |
2960번: 에라토스테네스의 체 (0) | 2023.09.08 |
1212번: 8진수 2진수 (0) | 2023.09.08 |
2953번: 나는 요리사다 (0) | 2023.09.08 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!