728x90
[파이썬/자료구조] 스택(stack)
LIFO(Last In First Out) 방식.
후입 선출이라고도 하며, 가장 먼저 들어간 값이 맨 아래에 깔린다.
가장 나중에 넣은 데이터를 가장 먼저 빼낼 수 있다.
프링글스 통에서 과자를 추가하고 꺼내는 형태와 같다.
스택 구조의 연산
Push : 스택에 값 추가.
Pop : 스택 가장 마지막 원소를 삭제하고 반환.
Peek : 스택 가장 마지막 원소를 반환.(삭제 x)
Empty : 스택이 비어있으면 1, 아니면 0을 반환한다.
덱 라이브러리를 사용하면 리스트로 구현한 것보다 훨씬 빠르다.
from collections import deque
dq=deque() # 덱 생성
dq.append() # 덱의 가장 오른쪽에 원소 삽입
dq.popleft() # 가장 왼쪽 원소 제거
dq.appendleft() # 덱의 가장 왼쪽에 원소 삽입
dp.pop() # 가장 오른쪽 원소 제거
dp.clear() # 모든 원소 제거
dp.copy() # 덱 복사
dp.count(x) #x와 같은 원소의 개수를 계산
from collections import deque
stack = deque([1, 2, 3])
stack.append(4) // Push
print(stack)
stack.pop() // Pop
print(stack)
stack.appendleft(5)
print(stack)
stack.popleft()
print(stack)
top = stack[-1] // Peek, 가장 마지막 값을 제거하지 않고 반환한다.
print(top)
deque([1, 2, 3, 4])
deque([1, 2, 3])
deque([5, 1, 2, 3])
deque([1, 2, 3])
3
from collections import deque
def isEmpty(dq): # Empty, 스택이 비어있으면 True, 값이 있으면 false 반환
return not dq
stack = deque([1, 2, 3])
stack2 = deque()
print(isEmpty(stack))
print(isEmpty(stack2))
False
True
728x90
'파이썬 > 자료구조와 알고리즘' 카테고리의 다른 글
[파이썬] 클래스, self, __init__, __str__ (0) | 2022.03.06 |
---|---|
[파이썬] 유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기 (0) | 2022.03.05 |
[파이썬/자료구조] 큐(queue) 덱(deque) (0) | 2022.02.20 |
파이썬 자료구조/알고리즘 10 : 소수 찾기 알고리즘 (0) | 2022.02.10 |
파이썬 자료구조/알고리즘 09 : for ~ else문 응용하기 (0) | 2022.02.10 |