<--- 리트코드 622. Design Circular Queue --->

 # 문제: 원형 큐를 디자인하라.

 

 

# 풀이

1. 배열을 이용한 풀이 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class my_circular_queue:
  def __init__(self, k):
    self.q = [None* k
    self.maxlen = k
    self.p1 = 0
    self.p2 = 0
 
  # en_queue(): 리어 포인터 이동
  def en_queue(self, value):
    if self.q[self.p2] is None:
      self.q[self.p2] = value
      self.p2 = (self.p2 + 1) % self.maxlen
      return True
    else:
      return False
 
  # de_queue(): 프론트 포인터 이동
  def de_queue(self):
    if self.q[self.p1] is None:
      return False
    else:
      self.q[self.p1] = None
      self.p1 = (self.p1 + 1) % self.maxlen
      return True
 
  def Front(self):
    return -1 if self.q[self.p1] is None else self.q[self.p1]
 
  def Rear(self):
    return -1 if self.q[self.p2 - 1is None else self.q[self.p2 -1]
 
  def is_empty(self):
    return self.p1 == self.p2 and self.q[self.p1] is None
 
  def is_full(self):
    return self.p1 == self.p2 and self.q[self.p1] is not None
cs