def solution(cacheSize, cities):
answer = 0
res={}
if cacheSize==0:
return len(cities)*5
for c in cities:
c=c.lower()
if len(res)<cacheSize:
res[c]=0
answer+=5
elif len(res)==cacheSize and c in res.keys():
res[c]+=1
answer+=1
else:
for k,v in res.items():
if v==min(res.values()):
break
del res[k]
res[c]=0
answer+=5
return answer
# 틀린 방법
# 리스트로도 충분히 구현 가능했을텐데 생각이 부족했음
def solution(cacheSize, cities):
import collections
cache = collections.deque(maxlen=cacheSize)
time = 0
for i in cities:
s = i.lower()
if s in cache:
cache.remove(s)
cache.append(s)
time += 1
else:
cache.append(s)
time += 5
return time
deque 모듈은 초기화할 때 크기를 정해주지 않으면 기본적으로 무작위의 크기로 생성된다. 크기를 정해서 초기화한 후 크기를 넘어가게 된다면, append()로 추가했을 경우 왼쪽의 원소가 삭제되고, 반대로 appendleft()로 추가하면 오른쪽의 원소가 삭제된다.