알고리즘

스택 #백준 10828

현쥬스주스 2021. 3. 15. 20:34

www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

[ 문제 해결 방법 ]

 

해당 문제는 특별한 어려움 없이 조건대로만 코드를 작성해주면 된다. 대신 시간초과가 나기 쉽기 때문에 입력받을때 input() 대신  sys.stdin.readline()을 사용해주었다.

 

[ 소스코드 ]

 

import sys


n = int(input())
arr = []

for i in range(n) :
  v = sys.stdin.readline().rstrip().split()

  if v[0] == "push" :
    arr.append(v[1])
  
  elif v[0] == "pop" :
    if len(arr) == 0 :
      print(-1)
    else :
      print(arr[-1])
      del arr[-1]
  
  elif v[0] == "size" :
    print(len(arr))
  
  elif v[0] == "empty" :
    if len(arr) == 0 :
      print(1)
    else :
      print(0)

  elif v[0] == "top" :
    if len(arr) == 0 :
      print(-1)
    else :
      print(arr[-1])