개발 연습장/백준 문제풀이

[파이썬, Python] 백준 10828: 스택

LooanCheong 2023. 3. 3. 10:24
반응형

문제

https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

코드

import sys
input = sys.stdin.readline

n = int(input())
deque = []

for _ in range(n):
    com = input().split()
    if com[0] == "push":
        deque.append(com[1])
    elif com[0] == "pop":
        if deque: print(deque.pop())
        else: print(-1)
    elif com[0] == "size":
        print(len(deque))
    elif com[0] == "empty":
        print(1-int(bool(deque)))
    elif com[0] == "top":
        if deque: print(deque[-1])
        else: print(-1)
    else:
        pass

설명

자료구조와 관련한 문제인데 문제에 나온 대로 구현만 해주면 되는 간단한 문제이다.

push의 경우 append 함수를 통해 자료를 넣어주고
pop의 경우 pop 함수를 통해 자료를 빼준다.

스택을 통해 자료를 구성하므로, append를 하고 바로 pop을 하게 되면 들어갔던 자료가 나오는 것을 볼 수 있는데,
위에서부터 차례대로 쌓아나가는 모양이라고 생각하면 편하다.

size의 경우 deque의 크기를 len을 통해 출력해 주고
empty의 경우 bool함수를 통해 deque이 존재한다면 1의 값을 아니면 0의 값을 반환하는데 비어있으면 1을 아니면 0을 출력하는 명령이므로 1에서 bool(deque)를 빼주는 방식을 사용했다.
top의 경우 가장 위에 있는(가장 마지막 자료)를 출력하면 된다.

반응형