PS/BOJ

[Python] 백준 10828 : 스택

소-은 2022. 7. 14. 16:45
728x90

 

 

1. 문제

 

 

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

 

10828번: 스택

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

www.acmicpc.net

 

 

2. 접근

 

스택이란 ?

한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 자료구조

 

- push : 스택에 넣는 것
- pop : 스택에서 빼는 것
- size : 스택의 크기를 구하는 것
- empty : 스택이 비었는지 확인
- top : 스택의 가장 윗 데이터 반환

 

stack이 정의되어 있을 때, 

 

  • stack.append() : 리스트의 맨 끝에 원소 추가
  • stack.pop(x) : x번째 원소 삭제

 

 

3. 정답

 

# 리스트로 구현

import sys

n = int(sys.stin.readline())
stack = []

for _ in range(n) :
    word = sys.stdin.readline().split()

    if word[0] == "push":
        stack.append(word[1])
    elif word[0] == "pop":
        if len(stack):
            print(stack.pop())
        else : print(-1)
    elif word[0] == "size":
        if len(stack):
            print(len(stack))
    elif word[0] == "empty" :
        if len(stack):
            print(0)
        else: print(1)
    elif word[0] == "top":
        if len(stack):
            print(stack[-1])
        else: print(-1)

 

728x90