[프로그래머스-Stack/Queue] 캐시

CHOI YUN HO·2021년 4월 18일
0

알고리즘 문제풀이

목록 보기
28/63

📃 문제 설명

캐시

[문제 출처 : 프로그래머스]

👨‍💻 해결 방법

LRU 알고리즘을 고대로 구현하면 되는 문제이다.

LRU는 가장 오랫동안 참조되지 않은 것을 교체하는 알고리즘이기 때문에,

cache hit시에 해당 페이지를 삭제한 후 다시 맨 뒤에 append해주고, 페이지를 교체할 때는 맨 앞의 것을 pop해주는 식으로 구현했다.

👨‍💻 소스 코드

def solution(cacheSize, cities):
    answer = 0
    queue = []

    if cacheSize == 0:
        return len(cities) * 5
    for city in cities:
        city = city.lower()
        if city in queue:
            answer += 1
            queue.remove(city)
        else:
            answer += 5
        if queue and len(queue) == cacheSize:
            del queue[0]
        queue.append(city)

    return answer
profile
가재같은 사람

0개의 댓글