728x90
사용자에게 빠르게 정보를 제공하기 위해 사용하는 캐시에서 새로운 데이터가 발생했을 때, 가장 오래전에 사용된 데이터를 제거하고 새로운 데이터를 삽입하는 알고리즘입니다.
- 새로운 데이터가 들어온 경우
- 캐시에 넣어준다.
- 캐시가 가득차있다면, 가장 오래된 데이터를 제거하고 넣어준다.
- 존재하는 데이터가 들어온 경우
- 해당 데이터를 꺼낸 뒤,
- 가장 최근 데이터 위치로 보내준다.
파이썬으로 구현하면 다음과 같습니다.
cache_Size = 5
cache = [1, 2, 3, 4, 5]
user_data = [3, 7, 2]
for data in user_data:
# Miss!
if data not in cache:
if len(cache) < cacheSize:
cache.append(data)
else:
cache.pop(0)
cache.append(data)
# Hit!
else:
cache.pop(cache.index(data))
cache.append(data)
# 캐시 결과 확인
print(cache) # [4, 5, 3, 7, 2]
결과를 쫓아가보면,
- 3은 캐시에 존재합니다. 따라서 최근 위치로 옮겨줍니다. --> [1, 2, 4, 5, 3]
- 7은 새로운 데이터 입니다. 하지만 그대로 넣어주면 cacheSize를 넘어가므로 가장 오래된 데이터 1을 제거하고 넣어줍니다.
--> [2, 4, 5, 3, 7] - 2는 캐시에 존재합니다. 따라서 최근 위치로 옮겨줍니다. --> [4, 5, 3, 7, 2]
728x90
'python > 자료구조 & 알고리즘' 카테고리의 다른 글
[알고리즘] 백트래킹(backtracking) 알고리즘 / 파이썬 Python (0) | 2022.09.01 |
---|---|
원형 큐 - 모듈 없이 구현 (0) | 2022.08.24 |
[자료구조] 재귀 함수와 스택 / 파이썬 Python (0) | 2022.08.03 |
[자료구조] 동적계획법 Dynamic Programming / 파이썬 Python (0) | 2022.08.03 |
[자료구조] 우선순위 큐(Priority Queue)와 힙(Heap) / Python 파이썬 (0) | 2022.07.29 |