https://leetcode.com/problems/implement-stack-using-queues/description/
1-1) 코드(Deque 사용)
from collections import deque
class MyStack:
def __init__(self):
self.q = deque()
def push(self, x: int) -> None:
self.q.append(x)
def pop(self) -> int:
if len(self.q) > 0:
return self.q.pop()
def top(self) -> int:
return self.q[-1]
def empty(self) -> bool:
if len(self.q) > 0:
return False
else:
return True
1-2) 코드(Queue 2개 사용)
from collections import deque
class MyStack:
def __init__(self):
self.q1 = []
self.q2 = []
def push(self, x: int) -> None:
self.q1.append(x)
def pop(self) -> int:
while len(self.q1) != 1:
self.q2.append(self.q1.pop(0))
num = self.q1.pop(0)
while len(self.q2) != 0:
self.q1.append(self.q2.pop(0))
return num
def top(self) -> int:
while len(self.q1) != 1:
self.q2.append(self.q1.pop(0))
num = self.q1.pop(0)
while len(self.q2) != 0:
self.q1.append(self.q2.pop(0))
self.q1.append(num)
return num
def empty(self) -> bool:
if len(self.q1) > 0:
return False
else:
return True
2) 해설