파이썬

[자료구조] Stack을 Queue로 구현하기

Mara7 2023. 5. 14.
LIST
# Que로 stack 구현
class Queue:
    def __init__(self):
        self.data = []

    def push(self, value):
        self.data.append(value)

    def pop(self):  # 처음 넣은 값 삭제,,
        first_value = self.data.pop(0)
        return first_value

    def len(self):
        return len(self.data)

class QueStack:
    def __init__(self):
        self.Queue1 = Queue()
        self.Queue2 = Queue()
    def push(self, value): # 값을 넣기.
        self.Queue1.data.append(value)

    def pop(self): # 값을 삭제하기 # 큐는 맨 처음 값부터 삭제한다.Queue1의 값들을 Queue2로 옮기기,
        for i in range(self.Queue1.len()): # queue1의 길이만큼 반복하기
            self.Queue2.data = [self.Queue1.pop()] + self.Queue2.data # Q2의 data는 que1의 데이터 + que2의 뎅터
        first_value = self.Queue2.pop() # 첫번째 값은 마지막에 que2에 넣은 값
        for i in range(self.Queue2.len()): # 다시 que1에 넣어주기
            self.Queue1.data = [self.Queue2.pop()] + self.Queue1.data
        return first_value # 첫번째값 출력하기

QS = QueStack()
QS.push(1)
QS.push(2)
QS.push(3)
QS.push(4)
print(QS.Queue1.data)
print(QS.pop())
print(QS.Queue1.data)
print(QS.Queue2.data)
반응형
LIST

댓글