본문 바로가기

CodingTest/Baekjun Online Judge

[ BOJ / 파이썬 ] 10828 스택

 

간만에 푸니까 파이썬 입출력 시간초과 제한에 대해서 까먹었다.

풀이는 맞았는데 시간초과가 나서 혹시나 했더니 역시나였다.

 

import sys
input = sys.stdin.readline
def main():
  n = int(input())
  stack = []
  
  for _ in range(n):
    oper = input().strip()

    #push X: 정수 X를 스택에 넣는 연산이다.
    if len(oper) > 3 and oper[:4] == 'push':
      oper, x = oper.split(' ')
      x = int(x)
      stack.append(x)
    
    #pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에     들어있는 정수가 없는 경우에는 -1을 출력한다.
    if oper == 'pop':
      if stack:
        x = stack.pop()
        print(x)
      else:
        print(-1)
    #size: 스택에 들어있는 정수의 개수를 출력한다.
    if oper == 'size':
      print(len(stack))
    #empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
    if oper == 'empty':
      if not stack:
        print(1)
      else:
        print(0)
    #top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
    if oper == 'top':
      if stack:
        print(stack[-1])
      else:
        print(-1)
      

if __name__ == '__main__':
  main()

 

 

그냥 경우에 따라 스택 구현하면 되는 정말 간단한 문제.

웜엄 ..