Enqueue
: 큐 끝에 요소 insertDequeue
: 큐 앞의 요소 deleteisEmpty
: stack이 비어있으면 true, 그렇지 않으면 false 반환isFull
: 큐가 꽉 차있으면 true, 그렇지 않으면 false 반환peek
: 대기열을 제거하지 않고 대기열의 앞부분 값 가져오기1) 프린터의 출력 처리
2) 콜센터 고객 대기 시간
3) 캐시(cache) 구현
from collections import deque
class Cache:
def __init__(self, size):
self.cache = deque(maxlen=size) # 고정 크기의 큐 생성
self.size = size
def access_data(self, data):
if data in self.cache:
# 데이터가 캐시에 있으면, 최근 접근된 데이터로 업데이트하기 위해 제거 후 다시 추가
self.cache.remove(data)
self.cache.append(data)
print(f"'{data}'은(는) 캐시에서 발견되어 최근 항목으로 업데이트됨")
else:
# 캐시에 데이터가 없으면 추가
self.cache.append(data)
print(f"'{data}'을(를) 캐시에 추가함")
def display_cache(self):
print("현재 캐시 상태:", list(self.cache))
# 캐시 생성 및 사용 예시
cache_size = 3
cache = Cache(cache_size)
# 데이터 접근
cache.access_data("A")
cache.access_data("B")
cache.access_data("C")
cache.display_cache()
# 캐시가 가득 찼을 때, 새로운 데이터 추가
cache.access_data("D")
cache.display_cache()
# 이미 캐시에 있는 데이터 접근
cache.access_data("B")
cache.display_cache()
캐시 관리에 Queue를 쓰는 이유
-> 캐시가 가득 차서 새 데이터를 추가하는 경우 가장 오래된 데이터 (Queue 맨 앞의 데이터)가 제거되는데, 가장 오래된 데이터가 다시 사용될 가능성이 가장 적기 때문.
이미지 출처
https://www.programiz.com/dsa/queue
참고
https://www.programiz.com/dsa/queue
유익한 자료 감사합니다.