카테고리 없음
심심풀이 땅콩🥜 : 스택(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