https://school.programmers.co.kr/learn/courses/30/lessons/17680
from collections import deque
def solution(cacheSize, cities):
total_time = 0
q = deque()
if cacheSize == 0: # 캐시사이즈 0인 경우
return len(cities) * 5
for i in cities:
i = i.upper() # 대소문자 구분을 하지 않기 위해 모두 대문자로 변경
if i in q: # q에 있는 경우
q.remove(i)
q.appendleft(i)
total_time += 1
elif i not in q: # q에 없는 경우
q.appendleft(i)
total_time += 5
if cacheSize < len(q): # 캐시크기보다 q의 길이가 클 경우 제거
q.pop()
return total_time
LRU 알고리즘 참고 : https://dailylifeofdeveloper.tistory.com/355
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를 선언할 때 maxlen
을 설정해 캐시크기와 q의 길이에 대한 코드를 줄였다.