728x90
- https://www.acmicpc.net/problem/1912
풀이
1. 수열을 저장하는 배열을 선언한다.
2. 수열을 순환하면서 최대값을 저장하는 dp 배열을 선언한다.
3. 현재 입력되는 값과 이전 최대값과 현재 입력 값 중 최대 값을 저장한다.
4. 저장된 dp 배열에서 최대값을 구한다.
코드
import java.util.*
fun main(args: Array<String>) {
val sc = Scanner(System.`in`)
val n = sc.nextInt()
val arr = Array(n) {
sc.nextInt()
}
val dp = IntArray(n)
dp[0] = arr[0]
for (i in 1 until n) {
dp[i] = max(dp[i - 1] + arr[i], arr[i])
}
var result = Int.MIN_VALUE
for (i in 0 until n) {
if (result < dp[i]) {
result = dp[i]
}
}
println(result)
}
private fun max(a: Int, b: Int): Int {
return if (a < b) b else a
}
728x90
'알고리즘' 카테고리의 다른 글
[백준][KOTLIN] 11047 동전 0 (0) | 2021.12.23 |
---|---|
[백준][Kotlin] 12865 평범한 배낭 (0) | 2021.12.22 |
[백준][KOTLIN] 9251 LCS (0) | 2021.12.17 |
[백준][KOTLIN] 2565 전깃줄 (0) | 2021.12.17 |
[백준][KOTLIN] 11054 가장 긴 바이토닉 부분 수열 (0) | 2021.12.17 |