문제 출처 : leetcode.com/problems/design-circular-queue/
문제 해석 : 원형 큐 클래스를 작성하는 문제이다.
문제 풀이 : 나머지 연산을 이용해서 두개의 인덱스를 이용해서 구현하면 된다.
풀이 코드
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 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 1005 ACM Craft 문제 풀이 (1) | 2021.02.28 |
---|---|
[알고리즘][Python] LeetCode 771 Jewels and Stones 문제 풀이 (0) | 2021.02.27 |
[알고리즘][Python] LeetCode 232 Implement Queue Using Stacks 문제 풀이 (0) | 2021.02.25 |
[알고리즘][Python] LeetCode 225 Implement Stack Using Queues 문제 풀이 (0) | 2021.02.25 |
[알고리즘][Python] 백준 17940 지하철 문제 풀이 (0) | 2021.02.24 |