Language/Python

[Python] Stack 사용하기

ooeunz 2019. 10. 9. 14:47
반응형

파이썬에서의 스택 = 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

 

 

반응형