BOJ(백준) 10828번 스택 파이썬
2021. 3. 19. 13:09ㆍ개인 공부 공간/Algorithm
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
코드
stack = []
def push(X):
stack.append(X)
def pop():
if len(stack) != 0:
return stack.pop()
else:
return -1
def size():
return (len(stack))
def empty():
if stack:
return 0
else:
return 1
def top():
if stack:
return stack[-1]
else:
return -1
import sys
r = sys.stdin.readline
N = int(r())
for _ in range(N):
f = r().rstrip()
if f[:2] == 'pu':
push(f[5:])
elif f[:2] == 'po':
print(pop())
elif f[:2] == 'si':
print(size())
elif f[:2] == 'em':
print(empty())
else:
print(top())
해설
LIFO(Last In First Out)의 특징을 갖는 스택에 대한 기본적인 문제이다. 파이썬에서 리스트의 마지막 요소를 반환하면서 동시에 삭제하는 pop()
의 용도를 알고 있으면 쉽게 풀 수 있는 문제라고 생각한다. 주어진 다섯 가지 기능들(push
, pop
, size
, empty
, top
)을 함수로 구현해서 코드를 작성하였다.
결과
'개인 공부 공간 > Algorithm' 카테고리의 다른 글
BOJ(백준) 1966번 프린터큐 파이썬 (0) | 2021.03.19 |
---|---|
BOJ(백준) 1874번 스택 수열 파이썬 (0) | 2021.03.19 |
BOJ(백준) 9012번 괄호 파이썬 (0) | 2021.03.19 |
BOJ(백준) 12865번 평범한 배낭 파이썬 (0) | 2021.03.19 |
BOJ(백준) 1912번 연속합 파이썬 (0) | 2021.03.19 |