코딩테스트/LeetCode

[LeetCode] Design Circular Queue(원형 큐 디자인)

jungmin.park 2023. 10. 19. 19:23

https://leetcode.com/problems/design-circular-queue/description/

 

Design Circular Queue - LeetCode

Can you solve this real interview question? Design Circular Queue - Design your implementation of the circular queue. The circular queue is a linear data structure in which the operations are performed based on FIFO (First In First Out) principle, and the

leetcode.com

  • int Front() : 맨 앞 항목을 가져옵니다. 대기열이 비어 있으면 -1 을 반환합니다.
  • int Rear() : 마지막 항목을 가져옵니다. 대기열이 비어 있으면 -1 을 반환합니다.
  • boolean enQueue(int value) : 순환 큐에 요소를 삽입합니다. 작업이 성공하면 true를 반환합니다 .
  • boolean deQueue() : 순환 큐에서 요소를 삭제합니다. 작업이 성공하면 true를 반환합니다 .
  • boolean isEmpty() : 순환 큐가 비어 있는지 여부를 확인합니다.
  • boolean isFull()순환 큐가 가득 찼는지 여부를 확인합니다.

원형 큐

 

구현을 위한 생성자 

  • 리스트를 가질 수 있도록 한다.
  • 큐의 길이를 알기위해 k 로 길이를 받을 변수를 하나 초기화 해준다.
class MyCircularQueue:
    def __init__(self, k):
        self.q = []
        self.k = k

 

삽입 구현

  • 큐가 제한된 길이를 가지고 있기 때문에 최대 길이만큼 데이터가 있는 확인
  • 없다면 데이터를 추가해주도록 한다.
    def enQueue(self, value):
            if self.k > len(self.q):
                self.q.append(value)
                return True
            else:
                return False

 

삭제 구현

  • 만약, 원형큐에 데이터 있을때만 삭제가 가능함으로 있는지 확인하고 삭제를 진행한다.
    def deQueue(self):
            if self.q:
                del self.q[0]
                return True
            else:
                return False

 

마지막 항목을 가져오는 기능 구현

  • 만약, 원형큐에 데이터 있을때만 삭제가 가능함으로 있는지 확인하고 삭제를 진행한다.
    def Rear(self):
            if self.q:
                return self.q[-1]
            else:
                return -1

 

첫번째 항목을 가져오는 기능 구현

  • 만약, 원형큐에 데이터 있을때만 삭제가 가능함으로 있는지 확인하고 삭제를 진행한다.
    def Front(self):
            if self.q:
                return self.q[0]
            else:
                return -1

 

큐의 Full 여부 확인 기능 구현

  • 만약, 원형큐에 데이터 있을때만 삭제가 가능함으로 있는지 확인하고 삭제를 진행한다.
    def isFull(self):
            if len(self.q) == self.k:
                return True
            else:
                return False

 

큐가 비었는지 확인하는 기능 구현

  • 만약 길이가 0이면 데이터가 없기 때문에 true 반환
    def isEmpty(self):
            if len(self.q) == 0:
                return True
            else:
                return False