[programmers/py] [1차] 캐시

승민·2023년 5월 23일

알고리즘

목록 보기
30/171

[1차] 캐시

https://school.programmers.co.kr/learn/courses/30/lessons/17680?language=python3

문제 설명

DB 캐시를 적용할 때 캐시 크기에 따른 실행시간 측정 프로그램을 작성하시오.

제한 사항

  • 각 도시 이름은 공백, 숫자, 특수문자 등이 없는 영문자로 구성되며, 대소문자 구분을 하지 않는다. 도시 이름은 최대 20자로 이루어져 있다.
  • 캐시 교체 알고리즘은 LRU(Least Recently Used)를 사용한다.
  • cache hit일 경우 실행시간은 1이다.
  • cache miss일 경우 실행시간은 5이다.

풀이

  • LRU알고리즘
    • 새로운 입력이 들어오면 가장 오래전에 입력된 값을 제거하고 새로운 입력을 추가
    • 기존에 있는 값이 입력되면 순서를 변경
def solution(size, cities):
    
    if size == 0 :
        return len(cities) * 5
    
    answer = 0
    arr = []
    for c in cities:
        c_l = c.lower()
                
        if c_l not in arr:
            answer += 5
        else :
            answer += 1
            arr.pop(arr.index(c_l))
        
        arr.append(c_l)
        
        if len(arr) > size :
            arr.pop(0)
    
    return answer

0개의 댓글