

문제 출처 : https://www.acmicpc.net/problem/10828
난이도 : 실버 4
정수 스택을 하나 구현하고, 아래 명령들을 처리해서 출력하면 된다.
push X : 스택에 X 넣기pop : 스택에서 맨 위 값 빼서 출력 (없으면 -1)size : 스택에 들어있는 정수 개수 출력empty : 비어있으면 1, 아니면 0top : 스택 맨 위 값 출력 (없으면 -1)스택은 파이썬 list 하나로 끝난다.
appendpop() (단, 비어있으면 -1)stack[-1] (단, 비어있으면 -1)len(stack)1 if len(stack)==0 else 0명령은 문자열로 들어오니까 split()해서 구분한다.
push는 두 토큰(push, X)import sys
input = sys.stdin.readline
N = int(input())
stack = []
out = []
for _ in range(N):
cmd = input().split()
if cmd[0] == "push":
stack.append(int(cmd[1]))
elif cmd[0] == "pop":
if stack:
out.append(str(stack.pop()))
else:
out.append("-1")
elif cmd[0] == "size":
out.append(str(len(stack)))
elif cmd[0] == "empty":
out.append("1" if not stack else "0")
elif cmd[0] == "top":
if stack:
out.append(str(stack[-1]))
else:
out.append("-1")
print("\n".join(out))
print()를 매번 호출하면 느려질 수 있음out 리스트에 모아서 마지막에 join으로 한 번에 출력해준 코드이다.top, pop에서 비어있을 때 예외 터지는 거 방지해야 함 (stack[-1], stack.pop() 바로 쓰면 터짐)