문제 링크 : www.acmicpc.net/problem/10828
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
스택을 직접 구현하지 않아도 해결 가능하지만 구현해보았음
import sys
class Stack:
def __init__(self):
self.stack = []
self.ptr = 0
def push(self, data):
self.stack.append(data)
self.ptr += 1
def pop(self):
if self.ptr > 0:
ret_value = self.stack[self.ptr - 1]
del self.stack[self.ptr - 1]
self.ptr -= 1
return ret_value
else:
return -1
def top(self):
if self.ptr > 0:
return self.stack[self.ptr - 1]
else:
return -1
def size(self):
return self.ptr
def empty(self):
if self.ptr > 0:
return 0
else:
return 1
N = int(sys.stdin.readline())
stack = Stack()
for _ in range(N):
op = sys.stdin.readline().strip().split()
if 'push' == op[0]:
data = int(op[1])
stack.push(data)
elif 'pop' == op[0]:
print(stack.pop())
elif 'size' == op[0]:
print(stack.size())
elif 'empty' == op[0]:
print(stack.empty())
elif 'top' == op[0]:
print(stack.top())
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1932번 - 정수 삼각형 (0) | 2021.01.02 |
---|---|
[백준] 9461번 - 파도반 수열 (0) | 2021.01.02 |
[백준] 1541번 - 잃어버린 괄호 (0) | 2020.12.29 |
[백준] 1931번 - 회의실배정 (0) | 2020.12.28 |
[백준] 1920번 - 수 찾기 (0) | 2020.12.24 |