[LeetCode] Implement Stack using Queues

아르당·2025년 10월 29일

LeetCode

목록 보기
54/68
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

두 개의 큐만 사용해서 후입선출(LIFO)를 구현해라. 구현된 스택은 일반 스택의 모든 기능(push, top, pop, empty)을 지원해아 한다.

  • void push(int x): 요소 x를 스택의 맨 위에 넣는다.
  • int pop(): 스택의 맨 위 요소를 제거하고 반환한다.
  • int top(): 스택의 맨 위 요소를 반환한다.
  • boolean empty(): 스택이 비어있다면 true를 반환하고, 그렇지 않다면 false를 반환한다.

Example

Input
["MyStack", "push", "push", "top", "pop", "empty"]

[[], [1], [2], [], [], []]

Output
[null, null, null, 2, 2, false]

Explanation
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // return 2
myStack.pop(); // return 2
myStack.empty(); // return false;

Constraints

  • 1 <= x <= 9
  • 최대 100개의 push, pop, top, empty 호출을 한다.
  • pop과 top에 대한 모든 호출은 유효하다.

Solved

class MyStack {

    private Queue<Integer> queue;

    public MyStack() {
        queue = new LinkedList<>();
    }
    
    public void push(int x) {
        queue.add(x);
        
        for(int i = 0; i < queue.size() - 1; i++){
            queue.add(queue.poll());
        }
    }
    
    public int pop() {
        return queue.poll();
    }
    
    public int top() {
        return queue.peek();
    }
    
    public boolean empty() {
        return queue.isEmpty();
    }
}

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack obj = new MyStack();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.top();
 * boolean param_4 = obj.empty();
 */
profile
내 마음대로 코드 작성하는 세상

0개의 댓글