https://leetcode.com/problems/implement-stack-using-queues/
큐로 스택을 구현하는 근본 문제
push 할 때 append 해주고 기존에 queue에 있던 원소는 popleft 이후 다시 큐의 맨 뒤로 줄줄이 붙여주면 된다.
요소 삽입 시 시간복잡도가 O(N)이 되어 다소 비효율적이긴 하지만, 큐로 스택을 구현할 수 있다.
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
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
'Programming > LeetCode' 카테고리의 다른 글
[LeetCode] Design Circular Queue (스택으로 원형 큐 구현) (0) | 2022.03.29 |
---|---|
[LeetCode] Implement Queue using Stacks(스택으로 큐 구현) (0) | 2022.03.29 |
[LeetCode] Daily Temperatures (0) | 2022.03.29 |
[LeetCode] Remove Duplicate Letters (0) | 2022.03.29 |
[LeetCode] Number of Islands (0) | 2022.03.25 |
댓글