Home LeetCode -232. Implement Queue using Stacks(MJ)
Post
Cancel

LeetCode -232. Implement Queue using Stacks(MJ)

#232. Implement Queue using Stacks

LeetCodeEasy단계 문제이다. 이 문제 역시 올리지 않아도 되지만, 내게는 꽤 도움이 되었던 워밍업 문제였기에 첨부한다.

📖Description

Implement a first in first out (FIFO) queue using only two stacks. The implemented queue should support all the functions of a normal queue (pushpeekpop, and empty).

Implement the MyQueue class:

  • void push(int x) Pushes element x to the back of the queue.
  • int pop() Removes the element from the front of the queue and returns it.
  • int peek() Returns the element at the front of the queue.
  • boolean empty() Returns true if the queue is empty, false otherwise.

Notes:

  • You must use only standard operations of a stack, which means only push to toppeek/pop from topsize, and is empty operations are valid.
  • Depending on your language, the stack may not be supported natively. You may simulate a stack using a list or deque (double-ended queue) as long as you use only a stack’s standard operations.

🔍My submission

1. set functions

수가 들어오면 그 수를 저장할 공간이 필요하다.

저장공간이 될 리스트 필요하다.

1
2
def __init__(self):
	self.li = [] #리스트선언

→ 이렇게 하는 것을 “객체화”라고 한다.

1
2
3
4
5
6
  def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        self.li.append(x)

push는 리스트에 추가된 것이기 때문에 list함수의 append를 사용하면 된다.

1
2
3
4
5
 def pop(self):
        """
        :rtype: int
        """
        return self.li.pop(0) #list의 pop함수

pop또한 list의 pop()을 사용하면 된다.

1
2
3
4
5
6
    def peek(self):
        """
        :rtype: int
        """
        peeks = self.li[0] #return self.li[0]
        return peeks

peek()은 pop과는 다르게 가장 첫 부분을 보여주기만 한다. pop처럼 빼지는 않는다.

1
2
3
4
5
6
7
8
    def empty(self):
        """
        :rtype: bool
        """
        if len(self.li) == 0:
            return True
        else:
            return False

empty()description에는 “boolean empty() Returns true if the queue is empty, false otherwise.”라고 나와있다. 이 문장을 그대로 코드로 옮겨주면 된다.

All code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class MyQueue(object):

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

    def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        self.li.append(x)

    def pop(self):
        """
        :rtype: int
        """
        return self.li.pop(0) #list의 pop함수
        

    def peek(self):
        """
        :rtype: int
        """
        peeks = self.li[0] #return self.li[0]
        return peeks
        

    def empty(self):
        """
        :rtype: bool
        """
        if len(self.li) == 0:
            return True
        else:
            return False

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

💡Remember

  • 클래스에 저장되어야 하는 특징과 특정함수를 어떻게 동작하게 해야 할지 기억하자!
  • stack에 너무 겁먹지 말자.
  • stack을 이용해 FIFO를 구현해보았다.
This post is licensed under CC BY 4.0 by the author.