[알고리즘] Leetcode_232_Implement_Queue_using_Stacks

jeongjwon·2023년 4월 4일
0

알고리즘

목록 보기
19/48

Problem

Solve

class MyQueue {
    Stack<Integer> queue = new Stack<>();
    Stack<Integer> temp = new Stack<>();
    
    public MyQueue() {
        
    }
    public void push(int x) {
        while(!queue.isEmpty()){
            temp.push(queue.pop());
        }
        queue.push(x);
        while(!temp.isEmpty()){
            queue.push(temp.pop());
        }
    }
    
    public int pop() {
        return queue.pop();
    }
    
    public int peek() {
        return queue.peek();
    }
    
    public boolean empty() {
        return queue.empty();
    }
}

두 가지 stack 을 이용하는데 실제적인 queue로 생각하는 stack과 이를 반대로 바꾸어줄 임시적인 저장공간인 stack 을 이용한다.

push 를 할 때마다 stack 을 queue 처럼 정렬해주기 위해 queue에 있던 모든 수들을 pop하는 순서대로 temp에 임시적으로 저장해두었다가, 추가할 값을 queue에 추가하고 저장해두었던 temp의 값들을 다시 queue에 추가해준다. push 에 이 작업을 해준다면 peek, pop, empty 때는 queue 처럼 작업된다.

0개의 댓글