업데이트:

카테고리: , ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

import sys

def push_func(array,n):
    array.append(int(n))
    return array
def pop_func(array):
    if len(array) > 0 :
        temp = array.pop()
        return array, temp
    else :
        return [],-1
def size_func(array):
    return len(array)
def empty_func(array):
    if len(array) == 0 :
        return 1
    else :
        return 0
def top_func(array):
    if len(array) == 0 :
        return -1
    else :
        return array[-1]

read = sys.stdin.readline
N = int(read())
# 각 입력을 받고 저장하기보단 N이 최대 10000이므로, 매 반복마다 함수 실행을하자.
results = []
array = []
for _ in range(N):
    temp = list(read().split())
    # print(temp,array)
    if temp[0] == "push":
        array = push_func(array,temp[1])
    elif temp[0] == "pop":
        array,val = pop_func(array)
        if len(array) == 0 :
            print(val)
        else :
            print(val)
    elif temp[0] == "size":
        print(size_func(array))

    elif temp[0] == "empty":
        print(empty_func(array))

    elif temp[0] == "top":
        if top_func(array) == -1 :
            print(-1)
            array = []
        else :
            print(top_func(array))





3. 생각 및 풀이


생각

이 문제는 자료구조의 가장 기초가 되는 스택을 사용하는 방법에 대해 묻는 문제이다.


문제 풀이

문제 풀이라고 할 것도 없이 list의 pop,append를 할줄 아는지, 조건문을 다룰지 아는지만 알면 손쉽게 풀 수 있는 문제이다.

최대 1 분 소요