[LeetCode] implement queue using stacks

yoonene·2023년 2월 8일
0

알고리즘

목록 보기
51/62

첫 번째 제출

class MyQueue:

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

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

    def pop(self) -> int:
        return self.stack.pop(0)

    def peek(self) -> int:
        print(self.stack)
        return self.stack[0]

    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()

두 번째 제출

class MyQueue:

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

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

    def pop(self) -> int:
        print('pop')
        print(self.input)
        print(self.output)
        self.peek()
        return self.output.pop()

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

    def empty(self) -> bool:
        return len(self.input) == 0 and len(self.output) == 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()

+)

  • 첫 번째 제출은 stack의 크기가 커질수록 복잡도가 커진다. (O(N))
  • 두 번째 제출은 output의 값이 모두 pop 되기 전에는 재입력이 일어나지 않기 때문에 시간 복잡도는 O(1)이다.

하지만 내 뇌는 두 번째를 생각하기 어려워~~

profile
NLP Researcher / Information Retrieval / Search

0개의 댓글