stack 두개로 queue를 구현하는 법입니다.
class Queue:
def __init__(self) :
self.main = []
self.temp = []
def isEmpty(self, array):
return len(array) == 0
def enqueue(self, value) :
self.main.append(value)
def dequeue(self) :
if self.isEmpty(self.temp) :
while self.main :
self.temp.append(self.main.pop())
return self.temp.pop()
# while self.main :
# self.temp.append(self.main.pop())
# value = self.temp.pop()
# while self.temp :
# self.main.append(self.temp.pop())
# return value
a = Queue()
a.enqueue(3)
print(a.dequeue()) # 3
a.enqueue(5)
print(a.dequeue()) # 5
a.enqueue(4)
a.enqueue(5)
print(a.dequeue()) # 4
a.enqueue(6)
print(a.dequeue()) # 5
print(a.dequeue()) # 6
print(a.main)
괄호안의 내용은 처음에 구현한 내용입니다.
무식하게 main의 요소를 전부 temp에 넣어버리고 temp의 마지막 요소를 출력한 뒤에
다시 main으로 돌려주었습니다.
그러지 않고 출력 명령어가 들어오면 temp에 넣어둔 다음
현재 temp의 상태를 체크해서 있으면 출력 없으면 전부 입력을 받는게 더 효율적일것 같습니다!!
'알고리즘' 카테고리의 다른 글
별자리 만들기 [백준 4386] - python (0) | 2022.03.24 |
---|---|
전기가 부족해 [백준 10423] - python (0) | 2022.03.23 |
도시 분할 계획 [백준 1647] - python (0) | 2022.03.22 |
최소 스패닝 트리 [백준 1197] - python (0) | 2022.03.21 |
네트워크 연결 [백준 1922] - python (0) | 2022.03.20 |