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)을 함수로 구현해서 코드를 작성하였다.

 

결과

스택결과.PNG

출처: https://privatedevelopnote.tistory.com/81 [개인노트]