큐를 이용해 다음 연산을 지원하는 스택을 구현하라.
- push(x): 요소 x를 스택에 삽입한다.
- pop(): 스택의 첫 번째 요소를 삭제한다.
- top(): 스택의 첫 번째 요소를 가져온다.
- empty(): 스택이 비어있는지 여부를 리턴한다.
MyStack stack = new MyStack();
stack.push(1);
stack.push(2);
stack.top(); //2 리턴
stack.pop(); //2 리턴
stack.empty(); //false 리턴
import collections
class MyStack:
def __init__(self):
self.q = collections.deque()
def push(self, x):
self.q.append(x)
# 요소 삽입 후 맨 앞에 두는 상태로 재정렬
for _ in range(len(self.q) - 1):
self.q.append(self.q.popleft())
def pop(self):
return self.q.popleft()
def top(self):
return self.q[0]
def empty(self):
return len(self.q) == 0
푸시를 구현할 때에 큐에 맨앞에를 길이만큼 돌려서 왼쪽의 숫자들을 맨 뒤로 보내서 스택처럼 구현을했다.