본문으로 바로가기

파이썬 스텍(stack) 연산

category Language/Python 2018.12.16 12:01
파이썬 스텍(stack) 연산


파이썬으로 알고리즘 문제를 풀다 보면 스텍이 필요할 때가 있다.

스텍은 검색해보면 알겠지만 먼저 넣은 것이 가장 나중에 나오는 Last In First Out(LIFO) 자료구조이다.


떠먹는 푸딩이나 아이스크림과 비슷하다고 생각하면 된다. 떠먹는 아이스크림 뚜껑을 열면 윗부분을 먹어야 아랫 부분을 먹을 수 있다.


스텍도 가장 나중에 들어간 것부터 뽑을 수 있게 되어있다.


stack은 두가지 연산이 있다. 넣는것(.append(item))과 빼는것(.pop())이 그것이다.


.append()를 쓰면 []의 맨 뒤에 더해진다.

예를들어 .append(1), .append(2)를 하면 [1, 2]이렇게 된다.


.pop()을 쓰면 [1, 2]의 뒤부터 빠진다.

.pop() => [1]

.pop() => [2]



1
2
3
4
5
6
7
8
stack = []
 
stack.append(1)
print(stack)
stack.append(2)
print(stack)
stack.pop()
print(stack)
cs


결과

[1]

[1, 2]

[1]



deque라는 컬렉션을 사용한 코드이다. 위에 코드와 비슷하다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
from collections import deque
 
stack = deque()
 
stack.append(1)
print(stack)
stack.append(2)
print(stack)
stack.pop()
print(stack)
stack.pop()
print(stack)
 
print(not stack)
cs

결과
deque([1])
deque([1, 2])
deque([1])
deque([])
True


스텍이 비었는지 여부는 not을 이용해 알 수 있다.

1
2
3
4
5
stack = []
print(not stack)
 
stack = [1]
print(not stack)
cs

결과

True

False


end.




댓글을 달아 주세요