코테 탈출일지

[백준] 10828번: 스택 - 파이썬/python 본문

구현

[백준] 10828번: 스택 - 파이썬/python

히려이 2023. 7. 4. 12:58

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

 

10828번: 스택

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

www.acmicpc.net

접근 방식

- 효율적인 접근 방식

- 데크로 스택 구현하

 

코드 풀이

from collections import deque
import sys

n = int(input()) # 명령의 갯수
stack = deque()

for _ in range(n):
    order = list(sys.stdin.readline().split()) # ex order = ['push', '2'], ['empty']
    
    if order[0] == 'push':
        stack.append(order[1])
        
    elif order[0] == 'pop':
        if len(stack) != 0:
            n = stack.pop()
            print(n)
        else: print(-1)
            
    elif order[0] == 'size':
        print(len(stack))
    
    elif order[0] == 'empty':
        if len(stack) == 0: print(1)
        else: print(0)
    
    elif order[0] == 'top':
        if len(stack) != 0:
            print(stack[-1])
        else: print(-1)

10866번 문제와 유사한 구조로 풀 수 있는 문제입니다. 먼저 스택, 큐, 덱의 개념을 명확히 아는 것이 중요합니다. 다만, 스택과 큐의 경우 파이썬에서 직접 지원되지 않는 자료형이므로 리스트를 활용할 수 있습니다. 하지만 양방향 큐인 덱을 활용하여 코드를 작성하는 것이 보다 편합니다.