[백준] 상자넣기 (1965)(kotlin)

문제 설명

백준 1965번 문제 링크

입력 및 출력

» 입력

파일의 첫 번째 줄은 상자의 개수 n (1 ≤ n ≤ 1000)을 나타낸다. 두 번째 줄에는 각 상자의 크기가 순서대로 주어진다. 상자의 크기는 1,000을 넘지 않는 자연수이다.

» 출력

첫째 줄에 한 줄에 넣을 수 있는 최대의 상자 개수를 출력한다.

예제 입출력(테스트케이스)

입력 출력
8
1 6 2 5 7 3 5 6
5

문제 풀이1

문제참고

import kotlin.math.max

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val N: Int = readLine().toInt()
    val box = readLine().split(" ").map { it.toInt() }
    val dp = IntArray(N)

    var count = 0

    for (i in 0 until N) {
        dp[i] = 1
        for (j in 0 until i) {
            if (box[j] < box[i]) {
                dp[i] = max(dp[j] + 1, dp[i])
            }
        }
        count = max(count, dp[i])
    }

    println(count)
}

문제 풀이1(시뮬레이션)

image1965-1 image1965-2 image1965-3 image1965-4 image1965-5 image1965-6