문제 링크 : https://www.acmicpc.net/problem/10828
풀이
Stack의 다양한 메서드들을 구현하는 문제이다. 파이썬의 deque와 sys.stdin.readline()을 통해 시간제한 안에서 여유롭게 통과할 수 있다. 실버 4 문제라기엔 파이썬 코더에겐 상당히 쉬운 문제라고 할 수 있다.
import sys # sys.stdin.readline()을 사용해 더 빠르게 입력 받기 가능
from collections import deque # list보다 대부분의 경우에서 더 빠른 deque 사용
def push(stack, num): # 정수 num을 stack에 저장
stack.append(num)
def pop(stack): # stack의 가장 위에 위치한 정수를 뺀 후에, 그 수 반환
if len(list(stack)) == 0: # 비었다면 -1 출력
print(-1)
else:
print(stack.pop())
def size(stack): # stack에 들어있는 정수의 수 반환
print(len(stack))
def empty(stack): # stack이 비었다면 1을, 그렇지 않다면 0을 반환
if len(stack) == 0:
print(1)
else:
print(0)
def top(stack): # stack의 가장 위에 위치한 수 반환
if len(stack) == 0:
print(-1)
else:
print(stack[len(stack)-1])
stack = deque()
for _ in range(int(sys.stdin.readline())):
cmd = list(sys.stdin.readline().split()) # cmd[0]은 명령어, cmd[1]은 push 될 값
if cmd[0] == 'push':
push(stack, cmd[1])
if cmd[0] == 'pop':
pop(stack)
if cmd[0] == 'size':
size(stack)
if cmd[0] == 'empty':
empty(stack)
if cmd[0] == 'top':
top(stack)
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
(Python) 백준 10866번 - 덱 (0) | 2023.01.10 |
---|---|
(Python) 백준 10845번 - 큐 (0) | 2023.01.10 |
(Python) 백준 10816번 - 숫자 카드 2 (0) | 2023.01.10 |
(Python) 백준 10773번 - 제로 (0) | 2023.01.09 |
(Python) 백준 9012번 - 괄호 (0) | 2023.01.05 |