Implement Queue using Stacks - leetcode(232)

llama·2022년 3월 15일

알고리즘

목록 보기
7/16
post-thumbnail

Implement Queue using Stacks

요구 사항

  • Stack을 이용하여 Queue를 구현하는데 구현된 큐는 push(append), pop(shift), is_empty(bool), peek등 일반적인 큐의 모든 기능을 지원해야 한다.
  • peek은 Queue의 맨 앞에 있는 요소를 반환한다.
  • Stack의 표준 작업만 이용해서 만든다. (shift등 사용불가)

Solution

class Myqueue:
    def __init__(self):
        self.queue = []

    def push(self, data):
        self.queue.append(data)

    def pop(self):
        pop_obj = None
        if self.is_empty():
            print("Queue is empty")
        else:
            pop_obj = self.queue[0]
            self.queue = self.queue[1:]
        return pop_obj

    def peek(self):
        peek_obj = None
        if self.is_empty():
            print("Queue is empty")
        else:
            peek_obj = self.queue[0]
        return peek_obj

    def is_empty(self):
        empty = None
        if len(self.queue) == 0:
            empty = True
        return empty


que = Myqueue()

que.push(1)

print(que.pop(), que.is_empty(), que.peek())
# >>> Queue is empty
# >>> 1 2 True False

📌 코드 풀이

  1. self.queue = [] 로 queue를 만들어준다.
  2. is_empty를 가장 먼저 만들어서 len(self.queue) == 0을 이용하여 스택이 빈것을 True or False로 반환해준다.
  3. push는 조건이 필요없이 제일 뒤로 삽입되기 때문에 self.queue.append(data)로 넣어준다.
  4. pop은 우선 pop_obj=None으로 만들어 준뒤, self.is_empty()로 큐가 비지 않았다면 pop_obj = self.queue[0]을 만들어주고 queue에서 빠져야 되기 때문에 바로 아래에 self.queue = self.queue[1:] index0을 빼고 만들어준다.
  5. peek도 pop과 마찬가지로 peek_obj를 None으로 만들어준뒤 is_empty조건을 거치고 peek_obj=self.queue[0]으로 첫번째 요소를 반환해주면 된다.

leetcode

https://leetcode.com/problems/implement-queue-using-stacks/

profile
요리사에서 프론트엔드 개발자를 준비하는중 입니다.

0개의 댓글