kiteday 님의 블로그

[프로그래머스-파이썬] 캐시 본문

코딩테스트

[프로그래머스-파이썬] 캐시

kiteday 2025. 12. 8. 12:53
반응형
SMALL

https://school.programmers.co.kr/learn/courses/30/lessons/17680

 

LRU 구현 문제이다.

LRU는 Least Recently Used의 줄임말로 캐시 히트가 발생할 시, 가장 최근에 들어온 캐시를 내보낸다.

처음에 테케를 다 통과하고도 틀렸는데 그 이유는 캐시 히트일 경우 최근 사용한 값을 맨 뒤로 순서를 바꿔줘야 했는데 그걸 안했기 때문..!

 

from collections import deque

def solution(cacheSize, cities):
    answer = 0
    cities = [city.lower() for city in cities]
    
    if cacheSize == 0:
        return len(cities)*5
    
    cache = deque()
    for city in cities:
        if city in cache:
            answer += 1
            cache.remove(city)
            cache.append(city)
            
        else:
            if len(cache) >= cacheSize:
                cache.popleft()
                cache.append(city)
            else:
                cache.append(city)
            answer += 5
    
    return answer

 

다른 사람 풀이를 보니 deque에 인자를 maxlen = cacheSize 이렇게 주어 len검사를 피할 수도 있더라

LIST