캐시

발자·2022년 12월 12일
0

programmers

목록 보기
16/34

문제

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

0개의 댓글