https://www.acmicpc.net/problem/10828
백준 10828번을 풀어보자!
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
1. 첫시도 (틀림. 시간초과)
co_num=0
co_num=input()
co_num=int(co_num)
stack = []
for i in range(co_num):
b=input()
if "push" in b:
stack.append(int(b[5:]))
elif "pop" in b:
if stack:
print(stack[-1])
stack=stack[:-1]
else:
print("-1")
elif "size" in b:
print(len(stack))
elif "empty" in b:
if stack:
print(0)
else:
print(1)
elif "top" in b:
if stack:
print(stack[-1])
else:
print(-1)
결과는 잘 나왔는데 백준에서는 런타임 에러가 떴다.
2. 두 번째 시도 (성공)
import sys
co_num=int(sys.stdin.readline())
stack = []
for i in range(co_num):
b = sys.stdin.readline().split() #input 대신 sys.stdin.readline()사용
ch=b[0]
if "push" in ch:
stack.append(int(b[1]))
elif ch=="pop":
if stack:
print(stack[-1])
stack=stack[:-1]
else:
print(-1)
elif ch=="size":
print(len(stack))
elif ch=="empty":
if stack:
print(0)
else:
print(1)
elif ch=="top":
if stack:
print(stack[-1])
else:
print(-1)
input대신 sys.stdin.readline() 사용하니까 성공했다. 백준에서는 입력받을 때 input사용하면 시간초과 에러가 자주 뜬다고 한다.
'코딩놀이: python C C++' 카테고리의 다른 글
프로그래머스 lv2: 오픈채팅방(dictionary, in) (0) | 2022.06.14 |
---|---|
프로그래머스 lv2: 스택/큐 주식가격, bool list 만들기 (0) | 2022.05.21 |
프로그래머스 LV2: 더맵게 python, heapq 사용법 (0) | 2022.05.21 |
[2696] 중앙값 구하기, 변수에 변수 넣기(?) (0) | 2022.05.19 |
[9506] 약수들의 합 (0) | 2022.02.18 |