배열을 이용한 스택 구현하기

스택은 후입선출 (LIFO - Last In First Out) 구조를 가지는 데이터 구조입니다. 이번 포스트에서는 배열을 이용하여 스택을 구현하는 방법을 알아보겠습니다.

배열을 이용한 스택의 구조

배열을 이용하여 스택을 구현할 때, 배열의 인덱스를 활용하여 스택의 top을 추적합니다. 초기에는 top을 -1로 설정합니다. 스택에 요소를 추가할 때는 top을 증가시키고, 요소를 제거할 때는 top을 감소시킵니다. 이렇게 함으로써 스택의 가장 최근에 삽입된 요소가 항상 top에 위치하게 됩니다.

배열을 이용한 스택의 구현 코드

class Stack:
    def __init__(self):
        self.stack = []
        self.top = -1
    
    def push(self, item):
        self.top += 1
        self.stack.append(item)
    
    def pop(self):
        if self.is_empty():
            return "Stack is empty"
        else:
            item = self.stack[self.top]
            self.top -= 1
            self.stack.pop()
            return item
    
    def is_empty(self):
        return self.top == -1
    
    def peek(self):
        if self.is_empty():
            return "Stack is empty"
        else:
            return self.stack[self.top]

스택의 사용 예

my_stack = Stack()
my_stack.push(1)
my_stack.push(2)
my_stack.push(3)
print(my_stack.pop())  # 3
print(my_stack.peek())  # 2
print(my_stack.is_empty())  # False

마무리

이번 포스트에서는 배열을 이용하여 스택을 구현하는 방법을 알아보았습니다. 배열을 이용하면 스택을 간단하게 구현할 수 있으며, 후입선출 구조를 활용하는 다양한 문제에서 유용하게 사용될 수 있습니다.

#자료구조 #스택