본문 바로가기

알고리즘/python

[python/파이썬] 백준 10828 스택

반응형

[문제 출처]

https://www.acmicpc.net/problem/10828

 

10828번: 스택

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

www.acmicpc.net

 

[소스 코드]

명령어에 따라 동작하는 함수를 작성하고 n번만큼 실행해주었다.

각 명령어에 따라서 경우를 나눠주면 되는 문제이다.

하지만 그다지 효율적으로 코드를 짠 것 같지는 않다.

 

단순히 input() 함수를 사용하면 시간 초과가 나오기 때문에 readline() 함수를 사용해주어야 한다.

#10828
import sys
input = sys.stdin.readline
stk = []

def comm():
  c = list(input().split())

  if len(c) == 1:
    if c[0] == 'size':
      print(len(stk))
    elif c[0] == 'empty':
      if len(stk) == 0:
        print(1)
      else:
        print(0)
    elif len(stk) == 0:
      print(-1)
    elif c[0] == 'top':
      print(stk[-1])
    elif c[0] == 'pop':
      tmp = stk[-1]
      del stk[-1]
      print(tmp)

  else:
    if c[0] == 'push':
      stk.append(c[1])
    

n = int(input())
for i in range(n):
  comm()
반응형