스택(STACK)
말그대로 차곡차곡 쌓듯이 데이터를 한쪽끝에서 넣거나 빼는 구조를 의미함
구조
LIFO(Last In, Fisrt Out) : 마지막에 넣은 데이터를 가장먼저 추출
FIFO(First In, Last Out) : 처음에 넣은 데이터를 가장 마지막에 추출
파이썬 관련 메써드
push() : 데이터를 스택에 추가
pop() : 데이터를 스택에서 꺼내기
백준에서 스택관련 문제풀이
https://www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
import sys
n = int(sys.stdin.readline())
stack = []
for i in range(int(n)):
b = list(map(str,n.split())) #[push,2]
if b[0] == "push":
stack.append(int(b[1])) #스택에 값추가
elif b[0] == "pop":
if len(stack) == 0: #스택에 아무것도 없으면 마지막 데이터로 출력
print(-1)
else:
stack.pop()
print(stack[-1])
elif b[0] == "size":
print(len(stack))
elif b[0] == "empty": # 비어있으면 1 아니면 0
if len(stack) == 0:
print(1)
else:
print(0)
else:
if len(stack) == 0: #0이면 -1출력 있으면 마지막수
print(-1)
else:
print(stack[-1])
'알고리즘 > 이론' 카테고리의 다른 글
| [알고리즘] 에라토스테네스의 체 (0) | 2021.12.09 |
|---|