[Python] Leetcode 232. Implement Queue Using Stack
Leetcode 232 Implement Queue Using Stack
1. 문제
큐를 이용해 다음 연산을 지원하는 스택을 구현하라
- push(x) : 요소 x를 스택에 삽입한다.
- pop(): 스택의 첫 번째 요소를 삭제한다.
- top(): 스택의 첫 번째 요소를 가져온다.
- empty(): 스택이 비어 있는지 여부를 리턴한다.
설명
- 스택은 앞에서만 푸시 팝 가능, 큐는 뒤에서 푸시 앞에서는 팝 가능.
- 때문에 뒤에 푸시된 값을 앞으로 보내서 popleft 해야함.
- 요소 삽입 후 맨 앞에 두는 상태로 재정렬하면 됨.
풀이
class MyStack:
def __init__(self):
self.q = collections.deque()
def push(self, x: int) -> None:
self.q.append(x)
# 요소 삽입 후 맨 앞에 두는 상태로 재정렬
for _ in range(len(self.q)-1):
self.q.append(self.q.popleft())
def pop(self) -> int:
return self.q.popleft()
def top(self) -> int:
return self.q[0]
def empty(self) -> bool:
return len(self.q) == 0