[백준] 오르막길 (2846)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 상근이가 측정한 높이의 수이자 수열의 크기인 N(1 ≤ N ≤ 1000)이 주어진다. 둘째 줄에는 N개의 양의 정수 Pi(1 ≤ Pi ≤ 1000)가 주어진다. 각 숫자는 상근이가 측정한 높이이다.
» 출력
첫째 줄에 가장 큰 오르막길의 크기를 출력한다. 만약 오르막길이 없는 경우에는 0을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
8 12 20 1 3 4 4 11 1 |
8 |
문제 힌트
예제의 경우 오르막길은 총 3개가 있다. (12-20, 1-3-4, 4-11) 오르막길에 포함된 숫자는 항상 증가해야 한다. 따라서, 1-3-4-4-11은 오르막길이 아니다.
문제 풀이1
import kotlin.math.abs
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
val N = readLine().toInt()
val route = readLine().split(" ").map { it.toInt() }
val list = mutableListOf<Int>()
if (list.size == 1) {
println(0)
return
}
var prev = route[0]
var prevMin = route[0]
var isUp = false
for (i in 1 until route.size) {
if (prev >= route[i]) {
if (isUp) {
list.add(abs(prevMin - prev))
isUp = false
}
}
if (prev <= route[i]) {
if (!isUp) {
prevMin = prev
isUp = true
}
}
prev = route[i]
}
if (isUp || prev < route[route.size - 1]) {
list.add(abs(prevMin - route[route.size - 1]))
}
println(list.maxByOrNull { it } ?: 0)
}