일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파워포인트
- Android
- Windows10
- Excel
- win32com
- pandas
- 윈도우10
- python
- VBA
- python3
- Outlook
- 파이썬GUI
- 오피스
- 문자열
- 깃
- 비주얼베이직
- pyqt5
- matlab
- html
- office
- 파이썬3
- 파이썬
- pythongui
- Windows11
- git
- 윈도우11
- 안드로이드
- 엑셀
- 아웃룩
- windows
Appia의 IT세상
파이썬[Python] 자료구조[Data Structure] 스택[Stack]구현하기 본문
파이썬[Python] 자료구조[Data Structure] 스택[Stack]구현하기
대학 시절 컴퓨터 공학을 전공한 저에게 자료구조라는 과목은 기억에 남습니다. 다양한 이유가 있었겠지만, 교수님이 저의 지도교수님이었고, A+ 학점을 획득한 과목이었기 때문입니다. 물론, 흐릿한 기억을 가지고, 파이썬[Python]을 가지고 자료구조[Data Structure]중에서 가장 많이 사용하는 스택[Stack]에 대해서 구현을 해보고자 합니다.
먼저 스택[Stack]에 대해서 간단히 살펴보겠습니다. 스택은 컴퓨터에서 사용되는 기본 자료구 중 후입 선출을 가지는 자료구을 이야기 합니다. 후입선출이라면, LIFO라고 많이 합니다. Last-In, First-Out으로 나중에 들어온 것이 먼저 나가는 것입니다.
즉 순차적으로 데이터가 쌓이고, 입구와 출구가 하나인 것입니다. 벽돌쌓기를 생각하시면 조금 더 편하실 것이라고 생각합니다. 즉, 먼저 쌓은 벽돌은 나중에 쌓은 벽돌들이 제거되어야만 제거될 수 있습니다.
그럼 일단 구현에 있어서 구상을 조금 해봤습니다.
1. 클래스를 만들 것
2. Init함수내에 스택 클래스에서 사용할 리스트를 생성할 것
3. Push/Pop 각각 Method을 만들것
그래서 다음과 같이 생성해봤습니다.
#클래스 선언
class Stack:
# 초기 설정, 스택으로 사용할 리스트 선언
def __init__(self):
self.stack = []
# In 함수 / Push 함수 List의 Append 함수 이용
def push(self, data):
self.stack.append(data)
# Out 함수 / Pop 함수, List의 pop함수 이용
def pop(self):
if len(self.stack) <=0 :
return("No Data in Stack")
else :
return self.stack.pop()
ExStack = Stack()
ExStack.push("A")
ExStack.push("B")
ExStack.push("C")
ExStack.push("D")
ExStack.pop()
ExStack.pop()
print(ExStack.stack)
|
cs |
위의 함수를 실행해보면, 다음과 같은 결과가 나타납니다.
['A', 'B']
|
cs |
위와 같이 push을 통해서 'A','B','C','D'을 입력하였습니다. 이 상태에서 pop함수를 통해서 2개의 데이터를 빼냈습니다. 따라서 순차적으로 들어가기 떄문에 나중에 들어간 데이터가 먼저 추출되어야 하기 때문에 D, C순서로 추출이 됩니다. 그리고 출력해보니, 위와 같은 결과가 나타납니다.
이번 포스팅에서는 파이썬을 통해서 자료구조에서 가장 많이 사용하는 스택(Stack)에 대해서 구현해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면, 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python 응용' 카테고리의 다른 글
파이썬[Python] 리스트(List)의 중복된 맴버 삭제하기, 없애기 (0) | 2020.10.13 |
---|---|
파이썬[Python] 자료구조[Data Structure] 큐[QUEUE]구현하기 (0) | 2020.10.11 |
파이썬[Python] 파일(file) / 디렉토리(directory) 비교 하기(filecmp) (0) | 2020.08.12 |
Python[파이썬] Ping(ICMP) 확인 하는 방법/확인하는 프로그램 만들기 (1) | 2020.07.18 |
Python[파이썬] PyQt5, requests를 이용한 GUI기반의 웹사이트 확인기 (6) | 2020.07.16 |