https://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
풀이 과정
원형 큐를 구현하는 문제이다.
선형 큐를 직접 구현시 front, rear 변수를 두고 구현했었는데 이는 큐의 사이즈 만큼 push()가 이루어지면 pop으로 큐를 다 비워도 추가로 원소를 넣을 수 없는 문제점이 있었다. 그래서 front, rear 변수가 큐의 크기를 넘어가면 큐의 크기로 나눈 나머지 값을 사용하게 해서 이미 변수가 채워졌다 없어진 공간도 다시 재활용이 가능하게 구현하였다.
소스 코드
class MyCircularQueue:
def __init__(self, k: int):
self.q = [None for _ in range(k)]
self.maxlen = k
self.front = 0
self.rear = 0
def enQueue(self, value: int) -> bool:
if self.q[self.rear] is None:
self.q[self.rear] = value
self.rear = (self.rear + 1) % self.maxlen
return True
else:
return False
def deQueue(self) -> bool:
if self.q[self.front] is None:
return False
else:
self.q[self.front] = None
self.front = (self.front + 1) % self.maxlen
return True
def Front(self) -> int:
return self.q[self.front] if self.q[self.front] is not None else -1
def Rear(self) -> int:
return self.q[self.rear - 1] if self.q[self.rear - 1] is not None else -1
def isEmpty(self) -> bool:
return self.front == self.rear and self.q[self.front] is None
def isFull(self) -> bool:
return self.front == self.rear and self.q[self.front] is not None
'알고리즘 문제 풀이 > 리트코드' 카테고리의 다른 글
LeetCode - 23. Merge k Sorted Lists [Python] (0) | 2022.08.04 |
---|---|
LeetCode - 641. Design Circular Deque [Python] (0) | 2022.08.04 |
LeetCode - 232. Implement Queue using Stacks [Python] (0) | 2022.08.02 |
LeetCode - 225. Implement Stack using Queues [Python] (0) | 2022.08.02 |
LeetCode - 739. Daily Temperatures [Python] (0) | 2022.08.02 |