캐시의 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