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