
문제 요약
정수를 저장하는 스택을 구현하고, 5가지 명령을 구현해라
입력
첫째 줄 : 명령의 수
둘째 줄 ~ N+1번째 줄 : 각 명령
출력
명령의 결과
스택을 class로 구현한 뒤 입력에 맞게 조건문을 설정하여 입력에 따라 명령을 실행하도록 구현한다.
명령에서 1(put)의 경우에는 넣을 숫자로 하나 더 입력을 받는다.
입력을 1개 받을지, 2개 받을지 모른다면 어떻게 처리해야 할까?
N = list(map(int, input().split()))
간단하다.
list로 받아서 처리하면 된다.
2번, 5번 명령에 '스택에 정수가 없다면 -1을 출력한다'라는 명령을 잊으면 안 된다.
명령의 수가 1,000,000개까지 있을 수 있으므로 입력할 때의 러닝타임을 줄이기 위해
sys.stdin을 활용한다.
import sys
input = sys.stdin.readline
class stack:
def __init__(self):
self.top = []
def put(self, n):
self.top.append(n)
def pop(self):
if not self.isEmpty():
return self.top.pop()
else:
return -1
def length(self):
return len(self.top)
def isEmpty(self):
if self.length() == 0:
return 1
else:
return 0
def isTop(self):
if not self.isEmpty():
return self.top[self.length()-1]
else:
return -1
s = stack()
for i in range(int(input())):
N = list(map(int, input().split()))
if N[0] == 1:
s.put(N[1])
elif N[0] == 2:
print(s.pop())
elif N[0] == 3:
print(s.length())
elif N[0] == 4:
print(s.isEmpty())
elif N[0] == 5:
print(s.isTop())