상세 컨텐츠

본문 제목

[Python 자료구조] 스택 (Stack)

자료구조

by donggyu1998 2022. 2. 6. 16:57

본문

반응형

💡 스택 (Stack) 

스택 알고리즘은 데이터를 임시 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 후입선출 ( LIFO - last in first out ) 방식이다.

스택에서 데이터를 넣는 작업을 push 라 하며, 꺼내는 작업을 pop 이라한다.

간략하게 설명하자면, '먼저 들어간 항목이 나중에 나오고, 나중에 들어간 항목이 먼저 나오는 것이다.'

 

💡 설명

 

1. 파란색, 주황색이 포함된 배열에 노란색을 넣는다. 

2. 노란색이 들어가게 되면 배열에는 [ 파란색, 주황색, 노란색 ] 이 있다. 

3. pop 을 시도하는 경우 나중에 들어간 노란색이 먼저 나오게 된다.

💡 숫자로 된 설명

 

💡 간략한 코드로 Stack 구현

1. stack 배열 생성 

2.  5와 3을 push 하게 되면 [5, 3] 이 출력된다.  

3.  pop 을 하는 경우 뒤 늦게 push 된 3이 꺼내게된다. 

 

 

💡 class 를 활용한 Stack 구현 

 

class stack:
    
    def __init__(self):
        self.stack_list = [] 
        
    def push(self, data):
        self.stack_list.append(data)
        
    def pop(self):
        return self.stack_list.pop()
    
    def isEmpty(self):
        return not self.stack_list
    
stk = stack() # stack 객체 생성
stk_isEmpty = stk.isEmpty()

print (stk_isEmpty) # 아무것도 들어있지 않는 경우 True 출력

stk.push(3)
print (stk_isEmpty) # 값이 들어있는 경우 False 출력

stack class 를 만드는데, stack 객체 초기화 변수로는 stack_list 를 만든다.

push, pop, isEmpty 함수를 만든다. 

push 함수 는 stack_list 에 값을 추가하고, pop 함수는 stack_list 값을 삭제한다. 

isEmpty 함수는 값이 들어 있지 않는 경우 True 를 반환하고, 값이 들어있는 경우 False 를 반환 한다. 

 

💡 실행 결과

stack 객체 생성 후 stk 를 통해 받는다.

아무 것도 들어있지 않는 경우 True 를 출력하고, 값이 들어 있는 경우 False 를 출력한다. 

 

💡 추가 설명 

stk.push(1) # stk의 push 함수 호출하여 파라미터로 1을 전달
stk.push(2) # stk의 push 함수 호출하여 파라미터로 2을 전달
stk.pop()

 

stack 은 LIFO 로 '먼저 들어간 항목이 나중에 나오고, 나중에 들어간 항목이 먼저 나오는 것이다.' 

stk 에 값을 1과 2를 넣는다.

pop 함수 호출 시 나중에 들어간 항목이 먼저 나오는 것으로 2가 나오고 stack_list 에는 1만 남게된다. 

 

 

반응형

관련글 더보기