Problem From.
https://leetcode.com/problems/validate-stack-sequences/
오늘 문제는 pushed 배열과 popped 배열이 주어질때, 임의의 스택이 있다고 가정하고 그 스택에 pushed 과 popped 배열에 놓인대로 반복했을때, stack 이 비게 되면 true 아니면 false 를 리턴하는 문제였다.
먼저 pushed 를 순회하면서 stack 에 원소를 넣어주고, 원소를 하나씩 넣어줄 때 마다, popped 배열에서 popIndex 에 있는 원소와 비교하여서 stack 에서 삭제할 수 있는지 검사해준다.
위 과정을 반복하다가 마지막에 stack 이 차있으면 false 비어있으면 true 를 반환해주었다.
import java.util.Stack
class Solution {
fun validateStackSequences(pushed: IntArray, popped: IntArray): Boolean {
val stack = Stack<Int>()
var popIndex = 0
for(x in pushed) {
stack.push(x)
while(stack.isNotEmpty() && stack.peek() == popped[popIndex]) {
stack.pop()
popIndex += 1
}
}
return stack.isEmpty()
}
}