2023-10-21-동국대SW역량강화캠프-101. 스택
문제
스택을 배운 서영이는 직접 스택 프로그램을 구현하고 싶어졌다.
서영이가 설계한 프로그램의 명령어들은 아래와 같다.
push x : 정수 x를 출력하고, 그 수를 스택에 넣는다. (x는 int형 범위 이내의 수이다.)
pop : 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size : 스택에 들어있는 정수의 개수를 출력한다.
empty : 스택이 비어있으면 1, 아니면 0을 출력한다.
top : 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
end : 프로그램을 종료한다.
서영이를 도와 위의 명령어를 수행하는 프로그램을 작성해보자. (유효한 명령어만 주어진다고 한다.)
입력
모든 명령어는 한 줄에 하나씩 입력되며 end를 제외한 명령어의 수는 100,000번을 넘지 않는다. (문제에서 설명한 형식 이외의 입력은 주어지지 않는다.)
또한, end 명령어는 마지막에 단 한번 입력된다.
출력
입력으로 주어진 명령어를 수행한 결과를 한 줄에 하나씩 출력하여라.
예제 1 입력
push 5
push 6
top
size
push 3
top
pop
pop
size
end
예제 1 출력
5
6
6
2
3
3
3
6
1
예제 2 입력
size
empty
empty
top
top
end
예제 2 출력
0
1
1
-1
-1
Source
end = False
stack = []
while(end == False):
cmd = input().split()
if(cmd[0] == 'push'):
print(cmd[1])
stack.append(cmd[1])
elif(cmd[0] == 'pop'):
if(len(stack) == 0):
print(-1)
else:
print(stack.pop())
elif(cmd[0] == 'size'):
print(len(stack))
elif(cmd[0] == 'empty'):
if(len(stack) == 0):
print(1)
else:
print(0)
elif(cmd[0] == 'top'):
if(len(stack) == 0):
print('-1')
else:
print(stack[-1])
elif(cmd[0] == 'end'):
end = True