공부 기록장

백준 10828. 스택 본문

코딩 테스트/백준 문제 풀이

백준 10828. 스택

빛나무 2023. 12. 31. 19:02

문제 설명

정수를 저장하는 스택을 구현하고, 입력으로 주어지는 명령을 처리하는 프로그램

명령은 총 다섯 가지

  • push x : 정수 x를 스택에 넣는 연산
  • pop : 스택 가장 위의 정수를 빼고 출력, 스택에 정수가 없는 경우 -1
  • size : 스택에 들어있는 정수의 개수 출력
  • empty : 스택이 비어있으면 1, 아니면 0 출력
  • top : 스택 가장 위에 있는 정수를 출력, 스택에 정수가 없는 경우 -1

 

입력

명령의 수 N(1 ~ 10,000)과 N개 줄에 명령어 입력

 

출력

출력해야 하는 명령이 주어질 때마다, 한 줄에 하나씩 출력

 

코드

# N = int(input())
import sys
input = sys.stdin.readline
N = int(input())

stack = []
for i in range(N):
    comm = list(input().split())
    if comm[0] == 'push':
        stack.append(comm[1])
    elif comm[0] == 'pop':
        if len(stack) == 0:
            print(-1)
        else:
            print(stack.pop())
    elif comm[0] == 'size':
        print(len(stack))
    elif comm[0] == 'empty':
        if len(stack) == 0:
            print(1)
        else:
            print(0)
    else:  # top
        if len(stack) != 0:
            print(stack[len(stack)-1])
        else:
            print(-1)

 

입력이 많을 경우,

import sys
input = sys.stdin.readline

 

위의 코드를 추가하여 빠르게 입력을 받을 수 있다.

 

또한, collections 라이브러리의 deque를 활용하면 리스트를 활용할 때보다 pop이 빠르다.

'코딩 테스트 > 백준 문제 풀이' 카테고리의 다른 글

백준 1966. 프린터  (0) 2023.12.31
백준 1158. 요세푸스 문제  (0) 2023.12.31
백준 10866. 덱  (0) 2023.12.31
백준 10773. 제로  (0) 2023.12.31
백준 4673. 셀프 넘버  (0) 2023.12.31