파이썬 알고리즘 인터뷰 문제 24번(리트코드 232) Implement Queue using Stacks
https://leetcode.com/problems/implement-queue-using-stacks/
class MyQueue:
def __init__(self):
self.stack = []
self.temp = []
def push(self, x: int) -> None:
self.stack.append(x)
def pop(self) -> int:
if not self.stack:
return None
while self.stack:
self.temp.append(self.stack.pop())
result = self.temp.pop()
while self.temp:
self.stack.append(self.temp.pop())
return result
def peek(self) -> int:
if not self.stack:
return None
while self.stack:
self.temp.append(self.stack.pop())
result = self.temp.pop()
self.stack.append(result)
while self.temp:
self.stack.append(self.temp.pop())
return result
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()
class MyQueue:
def __init__(self):
self.input = []
self.output = []
def push(self, x: int) -> None:
self.input.append(x)
def pop(self) -> int:
self.peek() # return self.peek() VS self.peek()
# 여기서 return 값은 저장되거나 반환되지 않으므로 아래의 return이 실행된다.
return self.output.pop()
def peek(self) -> int:
if not self.output:
while self.input:
self.output.append(self.input.pop())
return self.output[-1]
def empty(self) -> bool:
return self.input == [] and self.output == []
# 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()
input과 output을 분리할 수 있구나. pop, peek 등 하고 나서 굳이 다시 input에 옮길 필요가 없구나.