성장일기

[python] 백준 10828 - 스택 본문

알고리즘 문제

[python] 백준 10828 - 스택

김몽몽 2021. 12. 23. 14:26

첫째 줄에 N이 주어지고

이후 N개의 줄에 명령이 주어지는 문제

 

  • push X: 정수 X를 스택에 넣는 연산이다.
  • pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다.
           만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 스택에 들어있는 정수의 개수를 출력한다.
  • empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
  • top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
import sys
n=int(sys.stdin.readline().rstrip()) #숫자 받아오기
li=[]

for i in range(n):
    x=sys.stdin.readline().rstrip()
    
    if x.startswith('push'):  #push 구현
        li.append(x.split()[-1])  #뒤의 숫자를 리스트에 append
    elif x=='pop':
        if li==[]:
            print(-1)
        else:
            print(li[-1]) #가장 나중에 들어온 요소 print
            del li[-1]
    elif x=='size':
        print(len(li))
    elif x=='empty':
        if li==[]:
            print(1)
        else:
            print(0)
    elif x=='top':
        if li==[]:
            print(-1)
        else:
            print(li[-1])

제출을 이렇게 하고 통과했다.

하지만 뒤에 비슷한 큐 문제에서는 계속 시간초과 문제가 생긴다

자료형을 리스트가 아닌 큐로 만들면 괜찮아진다!

'알고리즘 문제' 카테고리의 다른 글

[python] 백준 1927 - 최소 힙  (0) 2021.12.23
백준 11279 - 최대 힙  (0) 2021.12.23
[python] 백준 18258 - 큐 2  (0) 2021.12.23
[python] 백준 10773 - 제로  (0) 2021.12.23
😶첫 시작  (0) 2021.12.23