Post

[백준/코틀린] 1874번: 스택 수열

실버 2

링크

1874번: 스택 수열

풀이

주어진 수열을 스택으로 만들 수 있는지 확인합니다.

  1. 스택의 최상단 값과 목표 숫자가 일치하면 pop
  2. 그렇지 않고, push 가능한 숫자가 남아있다면 push
  3. 그 외의 경우에는 수열을 만들 수 없습니다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
fun main() = with(StringBuilder()) {
    val n = readln().toInt()
    val deque = ArrayDeque<Int>()
    val stackSequence = List(n) { readln().toInt() }
    var stackIndex = 0
    var num = 1

    while (stackIndex < n || num <= n) {
        when {
            stackIndex < n && deque.lastOrNull() == stackSequence[stackIndex] -> {
                appendLine("-")
                deque.removeLast()
                stackIndex++
            }

            num <= n -> {
                appendLine("+")
                deque.addLast(num++)
            }

            else -> return println("NO")
        }
    }

    println(toString())
}

This post is licensed under CC BY 4.0 by the author.