코딩테스트/백준

[백준][Python] 10828 - 스택

solitude12 2024. 7. 10. 13:33

문제 링크

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


문제 풀이 과정

# 스택
# 링크 : https://www.acmicpc.net/problem/10828

from sys import stdin

input = stdin.readline


class Stack:
    def __init__(self):
        self.__stack = []
        self.__size = 0

    def empty(self):
        if not self.__stack:
            return 1
        else:
            return 0

    def size(self):
        return self.__size

    def push(self, item):
        self.__stack.append(item)
        self.__size += 1

    def pop(self):
        if self.__size > 0:
            self.__size -= 1
            return self.__stack.pop()
        else:
            return -1

    def top(self):
        if self.__size > 0:
            return self.__stack[-1]
        else:
            return -1


T = Stack()

N = int(input())

for _ in range(N):
    A = input().split()

    if A[0] == "push":
        T.push(A[1])
    elif A[0] == "pop":
        print(T.pop())
    elif A[0] == "top":
        print(T.top())
    elif A[0] == "size":
        print(T.size())
    elif A[0] == "empty":
        print(T.empty())

 

 

그냥 조건문의 형태로 만들어도 괜찮지만, 클래스 형태로 만들어서 해결하는게 코드의 가독성 측면에서 더 좋을 것 같아 그 방식으로 한 번 구현해봤다. 파이썬에서는 별도의 스택을 구현해놨거나 하기보다는 리스트에서 스택의 방식을 차용해서 범용적으로 쓰고 있기 때문에 원리만 이해해도 좋을 것 같다.