C-log

심심풀이 땅콩🥜 : 스택(Stack) 본문

카테고리 없음

심심풀이 땅콩🥜 : 스택(Stack)

4:Bee 2023. 11. 30. 23:17
728x90
 

04. 파이썬으로 스택 구현하기

## 스택(Stack)은 자료를 쌓아놓은 것이다. 스택은 서류나 책 위에 다른 서류나 책을 쌓아 올리는 형태다. 따라서 자료를 꺼낼 때는 맨 위부터 꺼내야 한다. 즉, 마지막에…

wikidocs.net

스택은 알고리즘을 알기전에 미리 알아야할 자료구조 중 하나이다. 스택은 LIFO(Last In First Out)로 구성 되어 있으며 배열로 값을 정렬하고 이것들을 push와 pop으로 추가하고 삭제 할 수 있다.

class Stack:
    def __init__(self) -> None:
        self.stack = []

    def is_empty(self):
        return len(self.stack) == 0

    def is_push(self, item):
        self.stack.append(item)

    def is_pop(self):
        if not self.is_empty():
            return self.stack.pop()
        else:
            return None

    def peek(self):
        if not self.is_empty():
            return self.stack[-1]
        else:
            return None

    def size(self):
        return len(self.stack)

위 코드를 실행하면 아래와 같다.

stack = Stack()

stack.is_push(10)
stack.is_push(20)
stack.is_push(30)

# 현재 stack의 모습
# 30
# 20
# 10

print(stack.is_pop())  # 30 -pop
print(stack.peek())  # 20 - peek
print(stack.size()) # 2
print(stack.is_empty()) # False

위와 같이 Stack의 코드를 알아 봤다. 우리가 조금 더 응용을 해볼 수 있다면 이전에 알아 봤던 정렬 알고리즘을 사용해서 해당 값이 push 될 때 내가 원하는 방향이나 순서로 값을 재정렬 해볼 수도 있을 것이다. 다음 시간에는 Heap을 알아 볼 것이다.

728x90
Comments