def solution(cacheSize, cities):
    cities = [city.lower() for city in cities]
    time = 0
    d = {}

    if cacheSize==0:
        return len(cities)*5

    for city in cities:
        if d.get(city)==None:
            if len(d)==cacheSize:
                cache_keys_sorted = sorted(d, key=lambda x: d[x])
                del d[cache_keys_sorted[0]]
            time += 5
        else:
            time += 1
        d[city] = time

    return time

생각해보기

  • 딕셔너리 d는 캐시이다.
  • 주어진 도시 리스트를 하나하나 돈다.
    • 캐시에 해당 도시를 업데이트 시간 정보가 없는 경우:
      • 캐시가 꽉 찼을 경우 업데이트가 가장 안된 도시를 제거한다.
      • 시간을 5 더한다.
    • 캐시에 해당 도시를 업데이트 시간 정보가 있는 경우:
      • 시간을 1 더한다.
    • 캐시 안 해당 도시에 시간을 변경된 시간으로 업데이트 한다.

+ 따끈한 최근 게시물