문제
큐를 이용해 다음 연산을 지원하는 스택을 구현하라.
입력
출력
MyStack stack = new MyStack() stack.push(1) stack.push(2) stack.top(); # 2 리턴 stack.pop(); # 2 리턴 stack.empty(); # false 리턴
풀이
- 구현 문제
- 스택이나 큐 ADT를 실제로 구현할 때는, 대게 스택은 연결리스트로 하고 큐는 배열로 한다. 이문제는 스택을 그저 활용하기만 하면 되지만, 만약 스택까지 직접 구현하게 된다면, 큐를 스택으로 구현하고, 스택은 연결리스트로 구현하는 구조가 될 것이다.
- 파이썬의 데크는 스택과 큐의 모든 기능을 제공하기 때문에 이문제는 원래 큐 ADT에는 없지만 파이썬의 자료형에서 지원하는 기능을 사용하면 매우 쉽게 풀수도 있다.
- 그러나 여기서는 문제의 의도에 맞게 큐의 FIFO에 해당하는 연산만 사용해서 구현해본다.
- 큐의 선언은 데크로 한다.