출처: 프로그래머스 코딩 테스트 연습, [프로그래머스] [1차] 캐시
LRU(Least Recently Used)이 가장 안 쓰인 캐시 먼저 교체된다는 캐시 교체 알고리즘인 것을 몰랐다. 영어를 잘 못해서 저 영어만 가지고는 파악하지 못했다...
1. 먼저 도시들을 모두 소문자로 고친다.
2. 도시들을 큐 자료구조에 저장한다.
3. 큐에 다음 도시가 존재한다면 큐에서 해당 도시를 맨 뒤로 옮기고 실행시간 1을 추가한다. 나는 삭제해서 다시 뒤에 이어 붙였다.
4. 존재하지 않으면 캐시 미스로 실행시간 5를 추가한다.
def solution(cacheSize, cities):
if cacheSize == 0: return 5 * len(cities)
answer, queue = 0, []
for city in cities:
city, flag = city.lower(), True
for v_city in queue:
if v_city == city:
flag = False
answer += 1
queue.remove(v_city)
queue.append(city)
break
if flag:
answer += 5
if len(queue) == cacheSize: queue.pop(0)
queue.append(city)
return answer
캐시에 도시가 존재하는지 확인할 때 반복문을 통해서 확인하지 않고 그냥 if v_city in queue:
로 했으면 flag
를 사용하지 않아도 되고 더 코드가 간결해졌을 것 같다.