python

[자료구조] 파이썬 스택(stack) 총정리

고로케 2021. 6. 21.
반응형

1. 스택이란?

: 가장 나중에 넣은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조로 Last In First Out(LIFO) 방식이다.
  (혹은 FILO : First In Last Out)

파이썬에서는 list [] 로 이미 구현되어있다.

2. 사용법(내장함수 이용)

a_list.append(1) : 괄호 안의 요소를 리스트 맨 뒤에 넣음

a_list = [1,2,3]
a_list.append(1)
=> [1,2,3,1]

a_list.pop() : 리스트의 맨 뒤에 요소를 꺼내고 리스트에서 삭제함

a_list = [1,2,3]
a_list.pop()
=> [1,2]

print(a_list.pop())
출력: 2
a_list : [1]

 

 

 

3. 클래스를 이용한 스택 구현

## Stack Class

class stack:
    def __init__(self):  # 스택 객체 생성
        self.items = []

    def push(self, item):  # 스택 요소 추가 push(.append())
        self.items.append(item)

    def pop(self):  # 스택 맨 뒤 요소 삭제하고 리턴 pop()
        return self.items.pop()

    def peek(self):  # 스택 맨 뒤 요소 리턴
        return self.items[-1]

    def isEmpty(self):  # 스택이 비었는지 확인(비었으면 True 리턴)
        return not self.items


stk = stack()  # stack 객체 생성
print(stk)  # stack object 생성 확인

print(stk.isEmpty())  # 처음에는 아무것도 들어있지 않으므로 True 출력
stk.push(7)  # stk 에 7 넣음 : [7]
stk.push(8)  # stk 에 8 넣음 : [7,8]
stk.push(9)  # stk 에 9 넣음 : [7,8,9]
print(stk.items) #= > [7, 8, 9]

print(stk.pop())  # stk 맨 마지막 값을 꺼내온다. 9를 꺼냈으니 출력 : 9
print(stk.items)  # [7, 8] 꺼내지고 남은 값들

print(stk.peek())  # stk 맨 마지막 값을 꺼내지 않고 출력만한다 출력 : 8
print(stk.items)  # [7, 8] 아무 값도 사라지지 않은걸 알 수 있다

print(stk.pop())  # stk 마지막 값 8 꺼내지면서 출력 : 8
print(stk.pop())  # stk 마지막 값 7 꺼내지면서 출력 : 7

print(stk.isEmpty())  # 객체에 아무것도 들어있지 않으므로 True 출력
print(stk.items)  # 비어 있으므로 [] 출력

 

** 댓글을 보고 예시문 내용 수정 하였습니다. 댓글 감사합니다😍

반응형

댓글