๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Algorithm

[Kotlin] ๋ฐฑ์ค€ 2693 - N๋ฒˆ์งธ ํฐ ์ˆ˜

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

๋ฐฐ์—ด 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)
}
728x90
๋ฐ˜์‘ํ˜•