from collections import deque
def solution(cacheSize, cities):
cache = [] # 캐시 메모리
cities = deque(cities) # 시간 절약을 위해 자료형 변경
answer = 0 # 실행시간
while cities:
city = cities.popleft().lower() # 소문자 변환
if city in cache: # 이미 저장되어 있을 때
cache.remove(city) # 제거
answer += 1 # 실행시간 1 증가
elif len(cache) < cacheSize: # 캐시크기보다 작으면
# 소문자로 변경된 문자열 맨 앞에 추가
answer += 5 # 실행시간 5 증가
else:
answer += 5
if cacheSize == 0: # 캐시크기가 0일 때
continue
del cache[-1] # 삭제
cache.insert(0, city)
return answer
✅ 캐시 교체 알고리즘 중 LRU(Least Recently Used)에 대한 이해를 묻는 문제
✅ cache hit : 캐시 메모리에 찾는 데이터가 존재
✅ cache miss : 캐시 메모리에 찾는 데이터가 존재하지 않음
✅ 다른 사람의 풀이에서 배운 코드
cache = collections.deque(maxlen=cacheSize)
출처 : LRU