예전에 풀었던 문제라서 이번엔 def
로 함수들을 구현해서 풀어보았다.
import sys
def push(x):
command.append(x)
#print("push함")
return(command)
def pop():
if len(command)==0:
print(-1)
else:
x = command.pop()
print(x)
#print("pop함")
def size():
print(len(command))
#print("size함")
def empty():
if len(command)==0:
print(1)
else:
print(0)
#print("empty함")
def top():
if len(command)==0:
print(-1)
else:
print(command[-1])
# print("top함")
st = []
command=[]
n = int(sys.stdin.readline())
for _ in range(n):
st = sys.stdin.readline().split()
for i in range(len(st)):
if st[i] == "push":
push(st[i+1])
elif st[i] =="pop":
pop()
elif st[i] == "size":
size()
elif st[i] =="empty":
empty()
elif st[i] =="top":
top()
14
push 1
push 2
top
1
size
2
empty
0
pop
2
pop
1
pop
-1
size
0
empty
1
pop
-1
push 3
empty
0
top
3
터미널에서 입력문이랑 출력문이랑 섞여서 나오길래 def사용해서 그런가 하고 한참 고민했지만 for _ in range(n): st = sys.stdin.readline().split()
for문을 이용해서 입력을 받아서 그렇게 보인거였다
아무 문제 없는 코드!
command.append()
를 하면 [2, 1, ….] 순서대로 뒤로 list에 push된다. stack의 개념에서 top()
을 구현하려면 list의 맨 뒤에 있는 요소를 불러오면 됨