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 더한다.
- 캐시에 해당 도시를 업데이트 시간 정보가 있는 경우:
- 캐시 안 해당 도시에 시간을 변경된 시간으로 업데이트 한다.