LeetCode 232. Implement Queue using Stacks

개발공부를해보자·2025년 1월 15일

LeetCode

목록 보기
24/95

파이썬 알고리즘 인터뷰 문제 24번(리트코드 232) Implement Queue using Stacks
https://leetcode.com/problems/implement-queue-using-stacks/

나의 풀이

class MyQueue:

    def __init__(self):
        self.stack = []
        self.temp = []

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

    def pop(self) -> int:
        if not self.stack:
            return None
        while self.stack:
            self.temp.append(self.stack.pop())
        result = self.temp.pop()
        while self.temp:
            self.stack.append(self.temp.pop())
        return result

    def peek(self) -> int:
        if not self.stack:
            return None
        while self.stack:
            self.temp.append(self.stack.pop())
        result = self.temp.pop()
        self.stack.append(result)
        while self.temp:
            self.stack.append(self.temp.pop())
        return result

    def empty(self) -> bool:
        return len(self.stack) == 0

# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()

다른 풀이1

class MyQueue:

    def __init__(self):
        self.input = []
        self.output = []

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

    def pop(self) -> int:
        self.peek() # return self.peek() VS self.peek()
        # 여기서 return 값은 저장되거나 반환되지 않으므로 아래의 return이 실행된다. 
        return self.output.pop()

    def peek(self) -> int:
        if not self.output:
            while self.input:
                self.output.append(self.input.pop())
        return self.output[-1]

    def empty(self) -> bool:
        return self.input == [] and self.output == []

# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
  • 책 풀이이다.
  • inputoutput을 분리할 수 있구나. pop, peek 등 하고 나서 굳이 다시 input에 옮길 필요가 없구나.
  • 어떻게 이런 생각을 하지?
profile
개발 공부하는 30대 비전공자 직장인

0개의 댓글