상세 컨텐츠

본문 제목

Baekjoon(Kotlin) - 11053. 가장 긴 증가하는 부분 수열

Problems(Kotlin)/Baekjoon

by KDLiam 2023. 9. 7. 14:33

본문

URL : https://www.acmicpc.net/problem/11053

 

11053번: 가장 긴 증가하는 부분 수열

수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이

www.acmicpc.net

 

[ RESULT ]

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))

fun main() {
    val N = br.readLine().toInt()
    val arr: List<Int> = br.readLine().split(" ").map { it.toInt() }
    val dp = IntArray(N) { 1 }

    for (i in 0 until N) {
        for (j in 0 until i) {
            if (arr[j] < arr[i] && dp[j] + 1 > dp[i]) { dp[i] = dp[j] + 1 }
        }
    }

    val longestSequence = dp.maxOrNull() ?: 0
    bw.write(longestSequence.toString())

    br.close()
    bw.close()
}

 

 

관련글 더보기