📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] LeetCode 622 Design Circular Queue 문제 풀이

Written by Donghak Park

문제 출처 : leetcode.com/problems/design-circular-queue/

 

Design Circular Queue - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


문제 해석 : 원형 큐 클래스를 작성하는 문제이다.

 

문제 풀이 : 나머지 연산을 이용해서 두개의 인덱스를 이용해서 구현하면 된다.


풀이 코드

class MyCircularQueue:

    def __init__(self, k: int):
        self.Q = [-1] * k
        self.front = 0
        self.rear = -1
        self.count = 0

    def enQueue(self, value: int) -> bool:
        if self.isFull():
            return False
        else:
            self.rear = (self.rear+1) % len(self.Q)
            self.Q[self.rear] = value
            self.count += 1
            return True

    def deQueue(self) -> bool:
        if self.isEmpty():
            return False
        else:
            ret = self.Q[self.front]
            self.front = (self.front+1) % len(self.Q)
            self.count -= 1
            return True

    def Front(self) -> int:
        if self.isEmpty():
            return -1
        else:
            return self.Q[self.front]

    def Rear(self) -> int:
        if self.isEmpty():
            return -1
        else:
            return self.Q[self.rear]

    def isEmpty(self) -> bool:
        if self.count == 0:
            return True
        else:
            return False

    def isFull(self) -> bool:
        if self.count == len(self.Q):
            return True
        else:
            return False


if __name__=="__main__":
    myCircularQueue = MyCircularQueue(3)
    print(myCircularQueue.enQueue(1))
    print(myCircularQueue.enQueue(2))
    print(myCircularQueue.enQueue(3))
    print(myCircularQueue.enQueue(4))

    print(myCircularQueue.Rear())
    print(myCircularQueue.isFull())
    print(myCircularQueue.deQueue())
    print(myCircularQueue.enQueue(4))
    print(myCircularQueue.Rear())

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 LeetCode 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.