- 스택(stack)은 삽입과 삭제가 저장소의 맨 윗에서만 일어나는, 즉 제한적으로 접근할 수 있는 나열 구조이다.
- 접근 방법은 언제나 목록의 끝에서만 일어나 끝먼저내기 목록(Pushdown list)이라고도 한다.
- 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다. 나중에 넣은 값이 먼저 나오는 것을 LIFO 구조라고 한다.
- 자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 한다.
- 스텍의 활용예시
웹 브라우저의 방문기록 (뒤로가기)
실행 취소 (가장 나중에 실행된 명령부터 취소)
역순 문자열 만들기 (가장 나중에 입력된 문자열부터 출력)
재귀 알고리즘에서 유용하게 사용
하노이의탑(유명한 알고리즘)
✍️ 내풀이
import sys
n = int(sys.stdin.readline())
stack=[]
for _ in range(n):
word = sys.stdin.readline().split()
if word[0] == "push":
stack.append(word[1])
elif word[0] == "pop":
if len(stack) == 0:
print(-1)
else:
print(stack.pop())
elif word[0] == "size":
print(len(stack))
elif word[0] == "empty":
if len(stack) == 0:
print(-1)
else:
print(0)
elif word[0] == "top":
if len(stack) ==0:
print(-1)
else:
print(stack[-1])