728x90
반응형
Python 문제풀이
import sys
n = int(input())
x=[]
for i in range(n):
# 입력을 input을 쓰지말고 이렇게 활용해야 빠르게 풀 수 있다.
order= sys.stdin.readline().rstrip()
if order =='pop':
if len(x)==0:
print(-1)
else:
print(x.pop())
elif order =='size':
print(len(x))
elif order =='empty':
if len(x)==0:
print(1)
else:
print(0)
elif order =='top':
if len(x)==0:
print(-1)
else:
print(x[len(x)-1])
else:
x.append(order.split()[1])
스택을 구현하는 문제입니다.
pop의 경우에는 기본적으로 존재하는 pop함수를 사용하여 리스트 마지막 요소(최근요소)를 지우고 출력하도록 합니다.
top의 경우에는 리스트 마지막 요소를 출력하면 되기 때문에 x[리스트길이 -1]을 출력해줍니다.
push의 경우는 'push 365' 등으로 입력받아지기 때문에 띄어쓰기를 기준으로 문자열을 분리해주는 split를 사용하고 뒷부분 문자열인 365가 필요하기 때문에 [1]을 붙여주어 append로 추가해줬습니다.
다만 이렇게 구현해도 시간초과로 정답처리를 받을 수 없는 경우가 있습니다.
그 경우에는 sys.stdin.readline().rstrip()를 사용하여 입력을 받게된다면 정말 빠르게 효율이 상승합니다.. 평소에도 이걸로 문자열을 받아야하나 싶었습니다.
728x90
반응형
'코딩문제풀이 > 백준' 카테고리의 다른 글
[백준 10610번] 30 Python 풀이 (0) | 2021.07.08 |
---|---|
[백준 1427번] 소트인사이드 Python 풀이 (0) | 2021.07.08 |
[백준 1316번] 그룹 단어 체커 Python 풀이 (0) | 2021.07.07 |
[백준 9012번] 괄호 Python 풀이 (0) | 2021.07.07 |
[백준 11721번] 열 개씩 끊어 출력하기 Python 풀이 (0) | 2021.07.07 |