[백준/코틀린] 1874번: 스택 수열
실버 2
링크
풀이
주어진 수열을 스택으로 만들 수 있는지 확인합니다.
- 스택의 최상단 값과 목표 숫자가 일치하면
pop - 그렇지 않고,
push가능한 숫자가 남아있다면push - 그 외의 경우에는 수열을 만들 수 없습니다.
코드
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.