처음 코드
n = int(input())
stack = []
for _ in range(n):
command = input()
if command == 'push':
num = input()
stack.append(num)
elif command == 'pop':
if len(stack) == 0:
print(-1)
else:
print(stack.pop(-1))
elif command == 'size':
print(len(stack))
elif command == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif command == 'top':
if len(stack) == 0:
print(-1)
else:
print(stack[-1]
Python
복사
여기서 입력을 push X 이런식으로 공백과 함께 받아서 그 수를 append 시켜야하는데.. 이게 좀 어려웠다.
list로 스택 구현하는게 맞나 싶기도 하고.
→ 입력 받고 split를 해서 인덱스로 공백을 처리하면 되는거였다.
수정 코드
import sys
input = sys.stdin.readline
n = int(input())
stack = []
for _ in range(n):
command = input().split()
if command[0] == 'push':
stack.append(command[1])
elif command[0] == 'pop':
if len(stack) == 0:
print(-1)
else:
print(stack.pop(-1))
elif command[0] == 'size':
print(len(stack))
elif command[0] == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif command[0] == 'top':
if len(stack) == 0:
print(-1)
else:
print(stack[-1]
Python
복사
문제 해결 아이디어
입력시 split과 인덱스를 활용해서 공백이 포함된 입력을 처리할 수 있다. (이건 자주 사용될 것 같으니 꼭 알아두기!)
나머지는 리스트의 pop, -1인덱싱을 활용해 충분히 스택을 구현할 수 있다.