[Kotlin] 백준 2693 - N번째 큰 수
문제
배열 A가 주어졌을 때, N번째 큰 값을 출력하는 프로그램을 작성하시오.
배열 A의 크기는 항상 10이고, 자연수만 가지고 있다. N은 항상 3이다.
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000보다 작거나 같은 자연수이다.
풀이
1. 숫자형 배열의 크기를 비교한다.
2. n번째 숫자를 찾아내는것 -> 정렬을 고려한다. -> 기본 1회 정렬로 풀이가 가능하다.
3. 내부함수를 이용한 시간복잡도는 O(nlog(n))으로 시간 안으로 풀이가 가능하므로 채택한다.
소스
import java.util.*
fun main() = with(System.`in`.bufferedReader()) {
val sb = StringBuilder()
val N = 3
val L = 10
val T = readLine().toInt() // 테스트 케이스의 수 입력
// 테스트 케이스 수 만큼 반복
repeat(T){
val arr = IntArray(L) // 값을 저장한 배열
val st = StringTokenizer(readLine()) // 테스트 케이스 입력
// 테스트 케이스 안의 숫자만큼 반복하며 배열에 대입
repeat(L){
arr[it] = st.nextToken().toInt() // 정렬할 배열에 숫자를 대입
}
arr.sortDescending() // 내림차순 정렬(오름차순으로 정렬해도 무방)
sb.append("${arr[N-1]}\n") // 3번째(N-1) 값을 출력값에 저장(오름차순의 경우 7번째 값)
}
println(sb)
}'Programming > Algorithm' 카테고리의 다른 글
| [Kotlin] 백준 1978 소수 찾기 (1) | 2025.03.08 |
|---|---|
| [Kotlin] 백준 1292 - 쉽게 푸는 문제 (1) | 2024.11.13 |
| [Kotlin] 백준 2609 - 최대공약수와 최소공배수(유클리드 호제법) (0) | 2024.10.20 |
| [Kotlin] 백준 2309 - 일곱 난쟁이 (1) | 2024.10.20 |
| [Kotlin] 백준 10870 - 피보나치 수 5 (0) | 2024.10.20 |