Computer Science/자료구조와 알고리즘
[프로그래머스][python] 최대 용량이 정해진 FIFO 큐 클래스
MLra
2021. 1. 12. 16:50
class MyStack(object):
def __init__(self):
self.lst = list()
def push(self, x):
self.lst.append(x)
def pop(self):
return self.lst.pop()
def size(self):
return len(self.lst)
class MyQueue(object):
def __init__(self, max_size):
self.stack1 = MyStack()
self.stack2 = MyStack()
self.max_size = max_size
def qsize(self):
return self.stack1.size()
def push(self, item):
if self.qsize()>=self.max_size:
return False
else:
self.stack1.push(item)
return True
def pop(self):
try:
if self.stack1.size() == 0:
raise emptyException
while self.stack1.size() > 0:
self.stack2.push(self.stack1.pop())
item = self.stack2.pop()
while self.stack2.size() > 0:
self.stack1.push(self.stack2.pop())
return item
except emptyException:
return False
class emptyException(Exception):
pass
n, max_size = map(int, input().strip().split(' '))
my_queue=MyQueue(max_size)
for _ in range(n):
command=input().split()
if command[0]=="PUSH":
print(my_queue.push(int(command[1])))
elif command[0]=="POP":
print(my_queue.pop())
elif command[0]=="SIZE":
print(my_queue.qsize())