cache 사이즈가 주어지고, 도시의 이름이 담긴 리스트가 주어진다
1.cache 사이즈
2.도시 리스트
예를 들어 cache size가 2일 때, 도시 리스트가 [서울,부산,서울,부산]이면
1.[서울]
2.[서울,부산]
3.[부산,서울]
4.[서울,부산]
으로 쌓일 것이다. 이럴 때 1번 프로세스가 이뤄질때 cache miss라고 보는거다
왜냐면 캐시에 쌓여있는 정보 중에 서울에 대한 데이터가 없는 즉, 캐시 사이즈에 도달할 때 까지는
계속 cache miss다 cache miss는 비용이 5만큼 든다
2번에 [서울,부산]이 됐을때 cache size에 도달했다. 여기까지 발생한 비용은 5+5해서 10
이제 3번에서 [서울,부산]에 서울이 들어오려하니 서울이 맞아떨어져서
그리고 앞서있던 0번째 인자 서울은 사라지고 [부산,서울]로 바뀐다.
여러가지 전처리와 예외에 대해 생각 해야한다.
def solution(cacheSize, cities):
answer = 0
arr=[]
city=[]
for i in cities:
city.append(i.lower())
if cacheSize==0:
answer=len(city)*5
else:
for i in city:
if i not in arr:
if len(arr) >= cacheSize:
arr.pop(0)
arr.append(i)
answer+=5
else:
arr.append(i)
answer += 5
else:
arr.remove(i)
arr.append(i)
answer+=1
return answer
작성한 코드는 이렇다.
def solution(cacheSize, cities):
from collections import deque
answer = 0
cache=deque(maxlen=cacheSize)
city = []
for i in cities:
s = i.upper()
if s in cache:
cache.remove(s)
cache.append(s)
answer+=1
else:
cache.append(s)
answer+=5
return answer
cacheSize=2
cities = ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Rome", "Paris", "Jeju", "NewYork", "Rome"]
print(solution(cacheSize,cities))