LeetCode - The World's Leading Online Programming Learning Platform
큐로 스택을 구현하는 문제이다. stack은 후입 선출의 구조이고 queue는 선입 선출의 구조이기 때문에 queue로 stack을 구현하기 위해서는 queue에 push할 때 push한 데이터가 다음에 pop할 때 바로 나올 수 있도록 queue의 맨앞으로 보내주는 작업을 해야한다.
// Swift로 Queue 구현
struct Queue {
var index = 0
var data = [Int]()
mutating func push(_ value: Int) {
data.append(value)
}
mutating func pop() -> Int {
defer {
index += 1
}
return data[index]
}
var top: Int {
data[index]
}
var count: Int {
data.count - index
}
}
class MyStack {
var queue = Queue()
init() {
}
func push(_ x: Int) {
queue.push(x)
// queue에 push하고 난 이후에 방금 push된 element를 맨앞으로 보내는 작업을 한다.
for _ in 0..<(queue.count - 1) {
queue.push(queue.pop())
}
}
func pop() -> Int {
return queue.pop()
}
func top() -> Int {
return queue.top
}
func empty() -> Bool {
return queue.count == 0
}
}