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

[ํ•ญํ•ด99ํด๋Ÿฝ] Java ๋น„๊ธฐ๋„ˆ_Day 4 Implement Queue using Stacks

by hk713 2025. 4. 3.

์˜ค๋Š˜์˜ ๋ฌธ์ œ >> https://leetcode.com/problems/implement-queue-using-stacks/description/

 

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

์Šคํƒ์€ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ํ•œ์ชฝ์—์„œ๋งŒ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ์œผ๋กœ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด 2๊ฐœ์˜ ์Šคํƒ์ด ํ•„์š”ํ•˜๋‹ค.

๋“ค์–ด์˜ค๋Š”๋Œ€๋กœ ์Œ“์•„ ๋†“์€ ์Šคํƒ๊ณผ ์ด๋ฅผ ์—ญ๊ตฌ์กฐ๋กœ ๋‹ด์„ ์Šคํƒ!

 

[ Java ]

import java.util.Stack;

class MyQueue {
    Stack<Integer> oldStack;
    Stack<Integer> newStack;

    public MyQueue() {
        oldStack = new Stack<>();
        newStack = new Stack<>();
    }
    
    public void push(int x) {
        oldStack.push(x);
    }
    
    public int pop() {
        if(newStack.isEmpty()){
            while(!oldStack.isEmpty()){
                newStack.push(oldStack.pop());
            }
        }
        return (int)newStack.pop();
    }
    
    public int peek() {
        if(newStack.isEmpty()){
            while(!oldStack.isEmpty()){
                newStack.push(oldStack.pop());
            }
        }
        return (int)newStack.peek();
        
    }
    
    public boolean empty() {
        return oldStack.isEmpty() && newStack.isEmpty();
    }
}

 

*์˜ค๋Š˜ ๋ฐฐ์šด ์Šคํƒ ์šฉ์–ด(์—ฐ์‚ฐ)

- top: ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ์œ„์น˜๋ฅผ ๋œปํ•œ๋‹ค!

- push: top ์œ„์น˜์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ

- pop: top ์œ„์น˜์— ํ˜„์žฌ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ

- peek: top ์œ„์น˜์— ํ˜„์žฌ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ

 

*์ฐธ๊ณ ) ํ ์šฉ์–ด

- rear: ํ์—์„œ ๊ฐ€์žฅ ๋ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์˜์—ญ

- front: ํ์—์„œ ๊ฐ€์žฅ ์•ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์˜์—ญ

- add: rear๋ถ€๋ถ„์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ

- poll: front๋ถ€๋ถ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ

- peek: ํ์˜ ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ

๋Œ“๊ธ€