Python
[Python/파이썬] 백준 # 10828 스택
Doldoi
2025. 4. 8. 04:58
문제 링크: https://www.acmicpc.net/problem/10828
문제
스택에 대해 연습해 볼 수 있는 문제
주어진 다섯 가지의 명령을 구현하면 된다.
코드
from collections import deque
stack = deque()
n = int(input())
for _ in range(n):
s = input()
command = s.split()
if command[0] == "push":
stack.append(command[1])
elif command[0] == "pop":
if stack:
print(stack.pop())
else:
print(-1)
elif command[0] == "size":
print(len(stack))
elif command[0] == "empty":
if stack:
print(0)
else:
print(1)
elif command[0] == "top":
if stack:
print(stack[-1])
else:
print(-1)
위의 코드를 제출했더니 시간 초과가 나왔다.
성능개선
from collections import deque
import sys
stack = deque()
n = int(input())
output = []
for _ in range(n):
s = input()
command = s.split()
if command[0] == "push":
stack.append(command[1])
elif command[0] == "pop":
if stack:
output.append(stack.pop())
else:
output.append(-1)
elif command[0] == "size":
output.append(len(stack))
elif command[0] == "empty":
if stack:
output.append(0)
else:
output.append(1)
elif command[0] == "top":
if stack:
output.append(stack[-1])
else:
output.append(-1)
sys.stdout.write('\n'.join(map(str, output)))
처음 제출한 코드는 매번 print()를 호출하게 되어 실행 시간이 길어지는 것이라 생각해서
output이라는 리스트에 출력해야 할 값들을 저장한 후
sysstdout.write()을 사용해 한번에 출력했더니 정답 처리 되었다.