https://programmers.co.kr/learn/courses/30/lessons/17680#
해당 문제는 LRU를 구현하는 문제로, 파이썬의 deque와 maxlen을 알고 있으면 쉽게 풀 수 있다.
하지만 나는 maxlen을 모르는 상태였기에 상대적으로 복잡한 코드를 짰었다.
먼저 데이터가 LRU에 존재하는지 확인한 후
이 때, cacheSize가 0인 경우 코드 오류가 나기에 미리 전처리를 해주었다
from collections import deque
def solution(cacheSize, cities):
if cacheSize == 0:
answer = len(cities) * 5
return answer
answer = 0
memory = deque()
for city in cities:
city = city.lower()
if city in memory:
memory.remove(city)
answer += 1
else:
if len(memory) >= cacheSize:
memory.popleft()
answer += 5
memory.append(city)
return answer
from collections import deque
def solution(cacheSize, cities):
answer = 0
memory = deque(maxlen=cacheSize)
for city in cities:
city = city.lower()
if city in memory:
memory.remove(city)
answer += 1
else:
answer += 5
memory.append(city)
return answer