본문 바로가기

알고리즘 삽질장

[BOJ] 10828번 - 스택

반응형


문제설명

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

 

10828번: 스택

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

www.acmicpc.net

사고과정

  • 입력을 받을 때마다 출력시켜야 하므로 for loop 안에서 바로 출력하도록 했다.
  • 그냥 input()을 사용하면 시간 초과 에러가 발생한다. 주어지 시간 범위도 0.5초 밖에 안된다.. 그래서 sys 라이브러리를 사용했다
  • 나머지는 문제에서 설명해준 대로 구현하면 된다.
  • 다시 기초부터 시작..!

풀이

import sys
input = sys.stdin.readline
n = int(input())
stack = []
for _ in range(n):
    orders = input().split()
    # push
    if len(orders) > 1:
        stack.append(int(orders[1]))
    else:
        # pop
        if orders[0] == 'pop':
            if len(stack) == 0:
                print(-1)
            else:
                print(stack.pop())
        # size
        if orders[0] == 'size':
            print(len(stack))
        # empty
        if orders[0] == 'empty':
            if len(stack) == 0:
                print(1)
            else:
                print(0)
        # top
        if orders[0] == 'top':
            if len(stack) == 0:
                print(-1)
            else:
                print(stack[-1])
반응형

'알고리즘 삽질장' 카테고리의 다른 글

[BOJ] 9012번 - 괄호  (0) 2021.10.23
[BOJ] 9093번 - 단어 뒤집기  (0) 2021.10.23
[이코테] BFS - 블록 이동하기  (0) 2021.10.23
[이코테] DFS/BFS - 인구 이동  (0) 2021.10.21
[이코테] 구현 - 외벽 점검  (0) 2021.10.21