11053번: 가장 긴 증가하는 부분 수열백준/문제2023. 8. 28. 14:56
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/11053
언어 : Kotlin
문제 설명 :
수열 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의 가장 긴 증가하는 부분 수열의 길이를 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 256MB
입출력 예 :
입력 | 출력 |
6 10 20 10 30 20 50 |
4 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
import kotlin.math.max
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = br.readLine().toInt()
val st = StringTokenizer(br.readLine())
val arr = Array(n) { 0 }
val dp = Array(n) { 1 }
repeat(n) { arr[it] = st.nextToken().toInt() }
for (i in 0 until n) {
for (j in 0 until i) {
if (arr[i] > arr[j]) {
dp[i] = max(dp[i], dp[j] + 1)
}
}
}
bw.write("${dp.max()}")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
1110번: 더하기 사이클 (0) | 2023.08.29 |
---|---|
2742번: 기찍 N (0) | 2023.08.29 |
1149번: RGB거리 (0) | 2023.08.28 |
1715번: 카드 정렬하기 (0) | 2023.08.28 |
1158번: 요세푸스 문제 (0) | 2023.08.28 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!