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 을 해줘야 알맞은 값이 나온다
'알고리즘' 카테고리의 다른 글
<백준> 15651번 자바 알고리즘 (0) | 2021.12.31 |
---|---|
<백준> 15650번 자바 알고리즘 (0) | 2021.12.30 |
<리트코드> 739번 파이썬 알고리즘 [스택] (0) | 2021.12.05 |
<리트코드> 20번 파이썬 알고리즘 [스택] (0) | 2021.12.04 |
<리트코드> 206번 파이썬 알고리즘 [연결 리스트 역순] (0) | 2021.12.03 |