요깨비's LAB

[백준, 자료구조, Kotlin] P.17298 오큰수 본문

알고리즘(Kotlin)/자료구조

[백준, 자료구조, Kotlin] P.17298 오큰수

요깨비 2021. 9. 18. 17:51

 

처음에 자꾸 시간초과가 나서 뭐지 하고 결국에 구글링을 참조하였는데, 로직은 제가 짠것과 거의 동일했습니다.
단, 저는 배열을 순회하면서 print("${arr[i]} ")으로 출력을 하여서 시간초과가 난 것 같습니다.
StringBuilder를 만들어 순회한 데이터를 담아 한번에 출력하니 정답으로 처리가 되었습니다.

import java.lang.StringBuilder
import java.util.*

fun main(args: Array<String>) {
    val scr = Scanner(System.`in`)
    val N = scr.nextInt()
    val stack = Stack<Int>()
    val arr = IntArray(N)
    for (i in 0 until N) {
        val element = scr.nextInt()
        arr[i] = element
    }

    val index = 0
    var i = 0

    stack.push(0)
    for (i in 1 until N) {

        while (!stack.isEmpty() && arr[stack.peek()] < arr[i]) {
            val index = stack.pop()
            arr[index] = arr[i]
        }



        stack.push(i)
    }

    stack.push(N - 1)

    while (!stack.isEmpty()) {
        val index = stack.pop()
        arr[index] = -1
    }

    val sb = StringBuilder()
    for (i in 0 until N) {
        sb.append("${arr[i]} ")
    }

    print(sb.toString())
}
Comments