백준 10828 스택 (파이썬)


10828 스택 문제 바로가기

접근방식

  • 스택 개념에 대한 문제이다. 파이썬의 리스트와 문자열 조작만 할 수 있다면 금방 풀 수 있는 문제이다.
  • 스택은 리스트 인덱스가 0인 곳에 변화가 활발하게 일어나는데 파이썬의 insert함수는 원하는 인덱스에 값을 넣을 수 있고 remove함수는 원하는 값을 뺄 수가 있어 이 두 가지를 잘 활용하였다.
  • 나는 for문을 돌면서 명령 입력을 받으며 바로바로 함수로 가 출력할 수 있도록 풀었다.

파이썬 코드

import sys

n = int(sys.stdin.readline())
arr = []

def push(n,arr):
    # 스택의 가장 위에 쌓는다.
    arr.insert(0,n)

def pop(arr):
    if len(arr) == 0:
        print(-1)

    # 스택의 가장 위의 값을 출력하고 배열에서 없앤다.
    else:
        print(arr[0])
        arr.remove(arr[0])

def empty(arr):
    if len(arr) == 0:
        print(1)
    else:
        print(0)

def size(arr):
    print(len(arr))

def top(arr):
    if len(arr) == 0:
        print(-1)
    # 스택의 가장 상단 값, 즉 배열에서 가장 앞에 있는 값을 출력한다. 
    else:
        print(arr[0])

for _ in range(n):
    a = sys.stdin.readline()
    if 'push' in a:
        # 배열에 입력문의 숫자만 넣도록 문자열 조작을 한다
        b = a.rstrip('\n')
        b = b.split(' ')
        push(b[1],arr)
    if 'pop' in a:
        pop(arr)
    if 'size' in a:
        size(arr)
    if 'empty' in a:
        empty(arr)
    if 'top' in a:
        top(arr)






© 2020.09. by 다로

Powered by theorydb