알고리즘

<리트코드> 622번 파이썬 알고리즘 [원형 큐]

changha. 2021. 12. 6. 22:31
 def __init__(self, k: int):
        self.q = [None] * k
        self.maxlen = k
        self.p1 = 0
        self.p2 = 0

    def enQueue(self, value: int) -> bool:
        if self.q[self.p2] is None:
            self.q[self.p2] = value
            self.p2 = (self.p2 + 1) % self.maxlen
            return True
        else:
            return False
            
    def deQueue(self) -> bool:
        if self.q[self.p1] is not None:
            self.q[self.p1] = None
            self.p1 = (self.p1 + 1) % self.maxlen
            return True
        else:
            return False
        

    def Front(self) -> int:
        if self.q[self.p1] is None:
            return -1
        else:
            return self.q[self.p1]
        

    def Rear(self) -> int:
        if self.q[self.p2 - 1] is None:
            return -1
        else:
            return self.q[self.p2 - 1]
        

    def isEmpty(self) -> bool:
        return self.p1 == self.p2 and self.q[self.p1] is None
            
    def isFull(self) -> bool:
        return self.p1 == self.p2 and self.q[self.p1] is not None

 

원형 큐를 디자인 하는 단순한 문제이다

 

주의 할 점은 

rear 에서 self.p2 - 1 => -1 을 해줘야 알맞은 값이 나온다