[프로그래머스] 캐시

Doyeon Kim·2024년 4월 9일

코딩테스트 공부

목록 보기
170/171

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

def solution(cacheSize, cities):
    answer = 0
    arr =[]
    for c in cities:
        c= c.lower()
        if cacheSize :
            if c not in arr:
                if len(arr) == cacheSize:
                    arr.pop(0)
                arr.append(c)
                answer += 5
            else:
                arr.remove(c)
                arr.append(c)
                answer +=1
            
        else:
            answer += 5
    return answer
    
    
    

LRU란 ?

가장 오래된 페이지를 교체하는 알고리즘

  • for문을 돌며 cache 배열에 접근할 때 모두 소문자로 변경하여 저장한다.
  • cacheSize 가 0이면 len(cities)*5 만큼 반환함
    그렇지 않으면
    1. c가 cache miss인 경우, 먼저 cacheSize와 cache의 길이가 같은 지 확인한다. 만약 같다면 더 이상 cache에 저장할 용량이 없다는 뜻으로 cache.pop(0)으로 cache의 첫 번째 값을 제거한다. 이후, cache에 cache.append(city)로 city를 저장한다. 실행 시간은 5초이므로 time에 5를 더한다.
    1. cache hit인 경우, 이전에 같은 이름의 city가 존재하므로 이는 가장 최근에 참조 되었다는 의미가 되므로 cache에 있던 city를 삭제한 뒤, 맨 뒤에 city를 다시 저장한다. 실행 시간은 1초이므로 time에 1을 더한다.
profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글