ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7. 스택(Stack ADT) 파이썬
    Python/파이썬 자료구조 알고리듬 2019. 6. 2. 22:40
    반응형

    스택(Stack ADT)

     

    스택(stack)을 영한사전에서 찾아보면
    '(보통 깔끔하게 정돈된) 무더기'라고 되어 있습니다. 

     

    (차곡차곡) 물건을 쌓아 올리면 아래 것은 빼기가 어렵죠?
    마지막에 쌓은, 제일 위의 것을 먼저 꺼내 쓸 수 밖에 없습니다. 

     

    이를 LIFO(= last-in, first-out = 후입 선출)
    또는 FILO(= first-in, last-out =
    선입 후출)라고 하며,
    이와 같은 형태의 자료 구조를 스택이라고 합니다.  

     

    스택에 자료를 집어넣는(=쌓아주는) 것은 push,
    스택에서 자료를 꺼내는 것은 pop이라고 합니다. 

     

    리스트와 클래스를 이용해서 스택 추상 자료형을 만들어 보겠습니다. 

    class Stack:
    
        def __init__(self):
            self.data = []
    
        def push(self, element):
            self.data.append(element)
    
        def pop(self):
            return self.data.pop()
    
        def length(self):
            return len(self.data)
    
        def show(self):
            print(self.data)
    
        def clear(self):
            self.data.clear()
    
    
    poo = Stack()
    for i in range(5):
        poo.push(i)
    poo.show()
    print(poo.pop())
    print(poo.pop())
    poo.clear()
    poo.show()
    [0, 1, 2, 3, 4]
    4
    3
    []

    작성하고 나니 '이게 뭔 짓인가' 싶군요.. 

     

    실전에서 스택을 쓴다면, 리스트를 바로 이용하면 됩니다.
    push는 append, pop은 그대로 pop입니다.

    poo = []
    for i in range(5):
        poo.append(i)
    print(poo)
    print(poo.pop())
    print(poo.pop())
    반응형
Designed by Tistory.