๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL๐Ÿ”ฅ/์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[ํ•ญํ•ด99ํด๋Ÿฝ] Java ๋น„๊ธฐ๋„ˆ_Day 5 Implement Stack using Queues

by hk713 2025. 4. 4.

์˜ค๋Š˜์˜ ๋ฌธ์ œ >> Implement Stack using Queues - LeetCode

 

[ ์ƒ๊ฐ ํ๋ฆ„ ]

์–ด์ œ๋Š” ์Šคํƒ์œผ๋กœ ํ๋ฅผ ๊ตฌํ˜„ํ—€๊ณ , ์˜ค๋Š˜์€ ํ๋กœ ์Šคํƒ์„ ๊ตฌํ˜„ํ•˜๋Š”๊ฑฐ๋‹ˆ

๋‹จ์ˆœํžˆ ํ๋ž‘ ์Šคํƒ๋งŒ ๋ฐ”๊ฟ”์น˜๊ธฐ ํ•˜๋ฉด ๋˜๋Š”๊ฒŒ ์•„๋‹๊นŒ ์‹ถ์—ˆ๋‹ค

 

[ Java ] - ์˜ค๋‹ต

class MyStack {
    private Queue<Integer> oldQueue;
    private Queue<Integer> newQueue;

    public MyStack() {
        oldQueue = new LinkedList<>();
        newQueue = new LinkedList<>();
    }
    
    public void push(int x) {
        oldQueue.offer(x);
    }
    
    public int pop() {
        if(newQueue.isEmpty()){
            while(!oldQueue.isEmpty()){
                newQueue.offer(oldQueue.poll());
            }
        }
        return newQueue.poll();
    }
    
    public int top() {
        if(newQueue.isEmpty()){
            while(!oldQueue.isEmpty()){
                newQueue.offer(oldQueue.poll());
            }
        }
        return newQueue.peek();
        
    }
    
    public boolean empty() {
        return oldQueue.isEmpty() && newQueue.isEmpty();
    }
}

์ฒ˜์Œ ๋‚ด ์ƒ๊ฐ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ‹€๋ ธ๋‹ค..!

 

๊ฒฐ๊ตญ ํ•ด๊ฒฐํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

[ Java ]

class MyStack {
    private Queue<Integer> oldQueue;
    private Queue<Integer> newQueue;

    public MyStack() {
        oldQueue = new LinkedList<>();
        newQueue = new LinkedList<>();
    }
    
    public void push(int x) {
        oldQueue.offer(x);
    }
    
    public int pop() {
        while(oldQueue.size()>1){
            newQueue.offer(oldQueue.poll());
        }
        int topElement = oldQueue.poll();
        
        Queue<Integer> temp = oldQueue;
        oldQueue = newQueue;
        newQueue = temp;

        return topElement;
    }
    
    public int top() {
        while(oldQueue.size()>1){
            newQueue.offer(oldQueue.poll());
        }
        int topElement = oldQueue.peek();
        
        newQueue.offer(oldQueue.poll());
        Queue<Integer> temp = oldQueue;
        oldQueue = newQueue;
        newQueue = temp;

        return topElement;
    }
    
    public boolean empty() {
        return oldQueue.isEmpty();
    }
}

๋Œ“๊ธ€