[프로그래머스 | Python] 캐시

게으른 완벽주의자·2023년 1월 31일
0

프로그래머스

목록 보기
25/83
post-custom-banner

프로그래머스_캐시

캐시의 LRU 알고리즘을 이해하고 있어야한다
캐시의 길이가 cacheSize와 같은데 새로운 도시명이 등장했다면, 가장 처음에 참조했던 도시명을 삭제하고 새로운 도시명을 넣어준다
그리고 기존의 도시명이 등장했다면, 기존에 참조했던 순서를 삭제하고 ( =cache.pop(cache.index(city)) ) 맨 뒤에 가장 최근에 참조한 값으로 넣어준다

기존 도시를 cache.pop하고 새로 넣어주지 않으니 테스트케이스는 통과했지만, 히든에서 많이 막혔다. 과정을 꼼꼼히 생각하는 습관을 들여야할 것 같다

def solution(cacheSize, cities):
	#cache miss일 경우 실행시간 5, cache hit일 경우 실행시간 1
    answer = 0
    cache = []
    cities = [city.lower() for city in cities]
    if cacheSize==0:
        answer = len(cities)*5
        return answer
    
    for city in cities:
        if city not in cache:
            if len(cache)==cacheSize:
                cache.pop(0)
            cache.append(city)
            answer+=5
        else:
            cache.pop(cache.index(city))
            cache.append(city)
            answer+=1
    return answer
profile
데이터를 공부하고 있습니다
post-custom-banner

0개의 댓글