๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ž๋ฃŒ๊ตฌ์กฐ

[LeetCode] 225. Implement Stack using Queues (ํ•ด์„, Java ํ’€์ด)

์ ์ด 2023. 8. 28. 22:44
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

https://leetcode.com/problems/implement-stack-using-queues/description/

์˜ค์ง ๋‘๊ฐœ์˜ queue๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ›„์ž…์„ ์ถœ(LIFO)์˜ stack์„ ๊ตฌํ˜„ํ•˜์—ฌ๋ผ. ๊ตฌํ˜„๋œ ์Šคํƒ์€ ๊ธฐ๋ณธ ์Šคํƒ์˜ ํ•จ์ˆ˜(push, top, pop, empty)๋“ค์„ ์ง€์›ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

MyStack ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ๋ผ.

  • void push(int x): ์Šคํƒ์˜ ๋์— x๋ฅผ ๋„ฃ๋Š”๋‹ค.
  • int pop(): ์Šคํƒ์˜ ๋ ๊ฐ’์„ ์ง€์šฐ๊ณ , ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • int top(): ์Šคํƒ์˜ ๋ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • boolean empty(): ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์•„๋‹ˆ๋ผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฃผ์˜

  • ์˜ค์ง ํ์˜ ํ‘œ์ค€ operation๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ๋ผ. ์ด๋Š” ํ์˜ ๋์—์„œ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” push, ์•ž์—์„œ ์ฝ๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” pop, size์™€ is empty operation๋งŒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • ํ๊ฐ€ ์›๋ž˜ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ํ์˜ ํ‘œ์ค€ ์ž‘์—…๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฑ(์–‘์ชฝ ๋์—์„œ ์ถ”๊ฐ€/์ œ๊ฑฐ ๊ฐ€๋Šฅํ•œ ํ)๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ๋ผ.

 

ํ’€์ด

class MyStack {
    Queue<Integer> queue;

    public MyStack() {
        queue = new ArrayDeque<>();
    }

    public void push(int x) {
        queue.add(x);
        for(int i = 0 ; i < queue.size() - 1 ; i ++) {
            queue.add(queue.remove());
        }
    }

    public int pop() {
        return queue.poll();
    }

    public int top() {
        return queue.peek();
    }

    public boolean empty() {
        return queue.isEmpty();
    }
}

https://github.com/jeongum/java-algorithm/blob/master/stack/LeetCode_225_ImplementStackUsingQueues.java

๋ฐ˜์‘ํ˜•