코딩테스트/LeetCode
[LeetCode] Design Circular Queue(원형 큐 디자인)
jungmin.park
2023. 10. 19. 19:23
https://leetcode.com/problems/design-circular-queue/description/
- 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