문제
https://www.acmicpc.net/problem/10828
코드
import sys
class Stack:
def __init__(self):
self.stk = [None] * 10000
self.ptr = 0
def push(self, value):
self.stk[self.ptr] = value
self.ptr += 1
def pop(self):
self.ptr -= 1
if self.ptr < 0:
self.ptr = 0
return -1
return self.stk[self.ptr]
def size(self):
return self.ptr
def empty(self):
if self.ptr <= 0:
return 1
return 0
def top(self):
if self.ptr <= 0:
return -1
return self.stk[self.ptr - 1]
Stack 클래스를 정의해서 안에 필요 함수들을 넣었습니다.
먼저 명령의 수가 최대 10000개이기 때문에 push를 최대 10000번 한다는 가정 하에
self.stk = [None] * 10000을 했습니다.
pop 부분에서 self.ptr이 0보다 작아질 경우에는 스택이 비어있다는 뜻이기 때문에
포인터를 다시 0으로 만들어줍니다.
N = int(input())
s = Stack()
for i in range(N):
cmd = sys.stdin.readline().rstrip().split()
menu = cmd[0]
if menu == 'push':
s.push(cmd[1])
elif menu == 'pop':
print(s.pop())
elif menu == 'size':
print(s.size())
elif menu == 'empty':
print(s.empty())
elif menu == 'top':
print(s.top())
결과
'IT > 알고리즘' 카테고리의 다른 글
알고리즘 - 스택(deque) (0) | 2020.11.06 |
---|---|
백준 - 1874번(스택 수열) (0) | 2020.11.04 |
알고리즘 - 스택(stack) (0) | 2020.11.03 |
알고리즘 - 해시법(3) (0) | 2020.11.02 |
알고리즘 - 해시법(2) (0) | 2020.10.27 |
댓글