[프로그래머스 LV2] 캐시

Junyoung Park·2021년 12월 23일
0

코딩테스트

목록 보기
10/631

1. 문제 설명

캐시

2. 문제 분석

캐시 사이즈에 따라 cache 리스트를 만들고 cities의 city 순서대로 cache에 있는지 확인한다. cache hit 시 hit한 city를 가장 끝(cache[-1])로, cache miss 시 cache에 곧바로 추가할 수 있다면 append, 그렇지 않다면 가장 앞(cache[0])을 삭제하고 append한다. LRU를 어떻게 다룰지가 주요 관건. cacheSize == 0, cities의 city를 모두 lower() 등으로 통일하는 것은 부가적인 요소.

3. 나의 풀이

def solution(cacheSize, cities):
    cache = []
    total = 0
    cities = [city.lower() for city in cities]
    
    if cacheSize == 0: return len(cities) * 5
    
    for city in cities:
        if city not in cache:
            total += 5
            if len(cache) < cacheSize:
                cache.append(city)
            else:
                cache.pop(0)
                cache.append(city)
        else:
            total += 1
            cache.remove(city)
            cache.append(city)

    return total
profile
JUST DO IT

0개의 댓글