반응형
파이썬에서의 스택 = list를 사용
파이썬은 스택 자료구조는 따로 제공하지 않는다. 다만 기본 클래스인 list를 통해 스택을 흉내 낼 수 있다.
스택은 어떤 자료구조인가요?
스택은 가장 나중에 들어온 자료가 가장 먼저 처리되는 LIFO(Last-In-First-Out) 자료구조이다.
구멍이 하나밖에 없는 병이라고 생각하면 이해하기 쉽다.
Reference
https://www.youtube.com/watch?v=whVUYv0Leg0
스택이 지원하는 operation
스택은 다음 operation을 지원해야 한다.
Operation | 구현 | Time Complexity - Average Case |
Pop item | my_list.pop | O(1) |
Push item | my_list.append | O(1) |
Stack 구현
Stack - init
파이썬에서는 리스트로 스택을 흉내 낸다. 따라서 스택 자료구조를 초기화할 때에는 빈 리스트를 만들어준다.
1
2
3
|
# 빈 스택(리스트) 초기화
stack = []
stack
|
cs |
Stack - push
스택에 원소를 넣을 때에는 append 메서드를 이용해 리스트의 가장 마지막에 원소를 넣도록 한다.
1
2
3
4
5
6
7
8
|
# 스택에 원소 추가
stack = [1,2,3]
stack.append(4)
stack
# [1, 2, 3, 4]
|
cs |
Stack - pop
스택에서 원소를 제거할 때에는 pop 메소드를 이용해 리스트의 가장 마지막 원소를 제거해준다. 이때, pop 메서드에 의해 제거한 원소를 리턴 받을 수 있다.
1
2
3
4
5
6
7
8
9
10
|
# 스택에서 원소 제거
stack = [1,2,3]
top = stack.pop()
print(top)
stack
# 3
# [1, 2]
|
cs |
Stack - top
스택에서 원소를 제거하지 않고 가져오기만 할 때에는 [-1]을 이용하도록 한다.
1
2
3
4
5
6
7
8
|
# 스택의 top 가져오기
stack = [1,2,3]
top = stack[-1]
top
# 3
|
cs |
반응형
'Language > Python' 카테고리의 다른 글
[Python] 가상 환경에 대한 이해: pyenv, virtualenv, anaconda (3) | 2019.11.11 |
---|---|
[Python] Dequeue 사용하기 (0) | 2019.10.24 |
[Python] 메서드 지역변수로 할당으로 time complexity 줄이기 (0) | 2019.10.11 |
[Python] Code convention (0) | 2019.10.10 |
[Python] python으로 알고리즘을 공부해야 하는 이유 (2) | 2019.10.09 |