[AtCoder] AtCoder Beginner Contest 336 D. Pyramid

TaeGN·2024년 10월 28일

AtCoder

목록 보기
24/55

문제풀이

  1. forwardCountArr[i] = 앞에서 부터 1~K를 만들 수 있는 최대 K값, backwardCountArr[i] = 뒤에서 부터 1~K를 만들 수 있는 최대 K값을 구한다.
  2. minOf(forwardCountArr[i], backwardCountArr[i])의 최대값을 구한다.

주의사항


소요시간

14분


package AtCoder.ProblemList.Difficulty800_1199.Pyramid

fun main() {
    val N = readln().trim().toInt()
    val A = readln().trim().split(" ").map(String::toInt)
    val forwardCountArr = IntArray(N)
    var forwardCount = 0
    for (i in 0 until N) {
        if (A[i] < ++forwardCount) forwardCount = A[i]
        forwardCountArr[i] = forwardCount
    }
    val backwardCountArr = IntArray(N)
    var backwardCount = 0
    for (i in (N - 1) downTo 0) {
        if (A[i] < ++backwardCount) backwardCount = A[i]
        backwardCountArr[i] = backwardCount
    }
    println((0 until N).maxOf { minOf(forwardCountArr[it], backwardCountArr[it]) })
}

문제링크

https://atcoder.jp/contests/abc336/tasks/abc336_d

0개의 댓글