[Leetcode 225] Implement Stack using Queues

이재윤·2025년 1월 30일
0

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

1-1) 코드(Deque 사용)

from collections import deque 

class MyStack:

    def __init__(self):
        self.q = deque()         

    def push(self, x: int) -> None:
        self.q.append(x)

    def pop(self) -> int:
        if len(self.q) > 0:
            return self.q.pop()
    
    def top(self) -> int:
        return self.q[-1]    

    def empty(self) -> bool:
        if len(self.q) > 0:
            return False
        else:
            return True 

1-2) 코드(Queue 2개 사용)

from collections import deque 

class MyStack:

    def __init__(self):
        self.q1 = []
        self.q2 = []         

    def push(self, x: int) -> None:
        self.q1.append(x)

    def pop(self) -> int:
        while len(self.q1) != 1:
            self.q2.append(self.q1.pop(0)) 

        num = self.q1.pop(0)

        while len(self.q2) != 0:
            self.q1.append(self.q2.pop(0))

        return num 

    def top(self) -> int:
        while len(self.q1) != 1:
            self.q2.append(self.q1.pop(0)) 

        num = self.q1.pop(0)

        while len(self.q2) != 0:
            self.q1.append(self.q2.pop(0))
        self.q1.append(num)
        return num

    def empty(self) -> bool:
        if len(self.q1) > 0:
            return False
        else:
            return True 

2) 해설

  • Python의 Deque을 1개 사용해서 문제를 풀거나,
    혹은 문제의 요구사항대로 Queue를 2개 사용해서 문제를 풀 수 있다.

0개의 댓글