문제 링크
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())
그냥 조건문의 형태로 만들어도 괜찮지만, 클래스 형태로 만들어서 해결하는게 코드의 가독성 측면에서 더 좋을 것 같아 그 방식으로 한 번 구현해봤다. 파이썬에서는 별도의 스택을 구현해놨거나 하기보다는 리스트에서 스택의 방식을 차용해서 범용적으로 쓰고 있기 때문에 원리만 이해해도 좋을 것 같다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][Java] 2609 - 최대공약수와 최소공배수 (1) | 2024.10.23 |
---|---|
[백준][Python] 17144 - 미세먼지 안녕 (0) | 2024.04.11 |