# Leetcode 232. Implement Queue using Stack

```python
class MyQueue:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, x: int) -> None:
self.stack1.append(x)
def pop(self) -> int:
if not self.empty():
while self.stack1:
num = self.stack1.pop()
self.stack2.append(num)
output = self.stack2.pop()
while self.stack2:
num = self.stack2.pop()
self.stack1.append(num)
return output
def peek(self) -> int:
if not self.empty():
while self.stack1:
num = self.stack1.pop()
self.stack2.append(num)
output = self.stack2[-1]
while self.stack2:
num = self.stack2.pop()
self.stack1.append(num)
return output
def empty(self) -> bool:
return len(self.stack1) == 0
# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
```
2023.08.13 AC
```python!
class MyQueue:
def __init__(self):
self.stack = []
def push(self, x: int) -> None:
self.stack.append(x)
def pop(self) -> int:
n = len(self.stack)
temp = []
i = 0
while i < n:
temp.append(self.stack.pop())
i += 1
res = temp.pop()
n = len(temp)
i = 0
while i < n:
self.stack.append(temp.pop())
i += 1
return res
def peek(self) -> int:
n = len(self.stack)
temp = []
i = 0
while i < n:
temp.append(self.stack.pop())
i += 1
res = temp[-1]
n = len(temp)
i = 0
while i < n:
self.stack.append(temp.pop())
i += 1
return res
def empty(self) -> bool:
return len(self.stack) == 0
# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
```