공부 기록장
백준 10828. 스택 본문
문제 설명
정수를 저장하는 스택을 구현하고, 입력으로 주어지는 명령을 처리하는 프로그램
명령은 총 다섯 가지
- 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 |