Programmers - [1차] 캐시

SJ0000·2022년 5월 10일

문제 링크

가장 오래 사용되지 않은 Data를 Cache에서 제거한다.
입력받은 City를 Dictionary의 key로 사용하고 value를 Cache에서 사용되지 않고 경과한 시간으로 처리하였다.

def solution(cacheSize, cities):

    cache = dict()

    def tick():
        for key in cache.keys():
            cache[key] += 1

    def update_cache(data):
        if cacheSize == 0:
            return

        if len(cache) < cacheSize:
            cache[data] = 0
            return

        recently_used_time = -1
        recently_used_data = ''

        for key in cache.keys():
            if recently_used_time < cache[key]:
                recently_used_time = cache[key]
                recently_used_data = key

        cache.pop(recently_used_data)
        cache[data] = 0

    def db_read(data):
        if cache.get(data) == None:
            update_cache(data)
            return 5
        else:
            cache[data] = 0
            return 1

    answer = 0

    cities = list(map(lambda x: x.upper(), cities))
    for city in cities:
        tick()
        answer += db_read(city)
        # print(city, cache)

    return answer
profile
잘하고싶은사람

0개의 댓글