[LeetCode]225. Implement Stack using Queues, 232. Implement Queue using Stacks

yunanΒ·2021λ…„ 2μ›” 19일
0
post-thumbnail

πŸ”¦ 문제 링크

πŸ”Š 파이썬 μ•Œκ³ λ¦¬μ¦˜ 인터뷰 책을 μ°Έκ³ ν–ˆμŠ΅λ‹ˆλ‹€.

  • 문제

큐둜 μŠ€νƒμ„ μŠ€νƒμœΌλ‘œ 큐λ₯Ό κ΅¬ν˜„ν•˜μ„Έμš”.

✍️ 풀이


  • 큐둜 μŠ€νƒ κ΅¬ν˜„ν•˜κΈ°
    ν˜„μž¬ κ°’ μ•žμ— μžˆλŠ” 것듀을 νμ—μ„œ λΉΌμ„œ ν˜„μž¬ κ°’ λ’€λ‘œ μ‚½μž…ν•œλ‹€.

  • μŠ€νƒμœΌλ‘œ 큐 κ΅¬ν˜„ν•˜κΈ°
    μŠ€νƒ 두 개λ₯Ό μ΄μš©ν•΄ pushλŠ” μ €μž₯λ§Œμ„ μˆ˜ν–‰ν•˜λŠ” input μŠ€νƒμ— λ„£κ³ 
    pop행동을 톡해 outputμŠ€νƒμ— 값이 μ—†λ‹€λ©΄ input의 λ°˜λŒ€λ‘œ 값을 λ°›μ•„μ˜€λ„λ‘ ν•œλ‹€.

πŸ›  μ½”λ“œ


  • 큐둜 μŠ€νƒ κ΅¬ν˜„ν•˜κΈ°
class MyStack:

    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.q = collections.deque()
        

    def push(self, x: int) -> None:
        """
        Push element x onto stack.
        """
        self.q.append(x)
        for _ in range(len(self.q) - 1):
            self.q.append(self.q.popleft())
        

    def pop(self) -> int:
        """
        Removes the element on top of the stack and returns that element.
        """
        return self.q.popleft()

    def top(self) -> int:
        """
        Get the top element.
        """
        return self.q[0]

    def empty(self) -> bool:
        """
        Returns whether the stack is empty.
        """
        return len(self.q) == 0
        
  • μŠ€νƒμœΌλ‘œ 큐 κ΅¬ν˜„ν•˜κΈ°
class MyQueue:

    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.stack = []
        

    def push(self, x: int) -> None:
        """
        Push element x to the back of queue.
        """
        self.tmp = []
        while self.stack:
            self.tmp.append(self.stack.pop())
        self.stack.append(x)
        while self.tmp:
            self.stack.append(self.tmp.pop())
        return self.stack

    def pop(self) -> int:
        """
        Removes the element from in front of queue and returns that element.
        """
        return self.stack.pop()

    def peek(self) -> int:
        """
        Get the front element.
        """
        return self.stack[-1]

    def empty(self) -> bool:
        """
        Returns whether the queue is empty.
        """
        return len(self.stack) == 0

πŸ“ 정리


🎈 참고


Book 링크

profile
Go Go

0개의 λŒ“κΈ€