반응형
[백준 11053번] 가장 긴 증가하는 부분 수열 - Kotlin
https://www.acmicpc.net/problem/11053
문제
- 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.
- 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.
입력
- 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.
- 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)
출력
- 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.
풀이
import kotlin.math.max
private class Solution11053 {
fun solution(n: Int, a: IntArray): Int {
val dp = IntArray(a.size) { 1 }
for (i in a.indices) {
for (j in 0 until i) {
if (a[i] > a[j]) {
dp[i] = max(dp[i], dp[j] + 1)
}
}
}
return dp.maxOrNull()!!
}
}
private fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val n = br.readLine().toInt()
val a = br.readLine().split(" ").map(String::toInt).toIntArray()
bw.append("${Solution11053().solution(n, a)}\n")
bw.flush()
br.close()
bw.close()
}
반응형
'Software > 백준' 카테고리의 다른 글
[백준 10816번] 숫자 카드 2 - Kotlin (0) | 2024.04.29 |
---|---|
[백준 1932번] 정수 삼각형 - Kotlin (0) | 2024.04.29 |
[백준 16234번] 인구 이동 - Kotlin (0) | 2024.04.29 |
[백준 1149번] RGB거리 - Kotlin (0) | 2024.04.29 |
[백준 2579번] 계단 오르기 - Kotlin (0) | 2024.04.29 |