가장 오래 사용되지 않은 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