[프로그래머스] 캐시

섬섬's 개발일지·2022년 2월 18일
0

프로그래머스

목록 보기
32/50

문제

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

입력형식

  • 캐시 크기(cacheSize)와 도시이름 배열(cities)을 입력받는다.
  • cacheSize는 정수이며, 범위는 0<=cacheSize<=30 이다.
  • cities는 도시 이름으로 이뤄진 문자열 배열로, 최대 도시 수는 100,000개이다.
  • 각 도시 이름은 공백, 숫자, 특수문자 등이 없는 영문자로 구성되며, 대소문자 구분을 하지 않는다. 도시 이름은 최대 20자로 이루어져 있다.

출력형식

  • 캐시 교체 알고리즘은 LRU(Least Recently Used)를 사용한다.
    • 사용된지 가장 오래된 것부터 제거
  • cache hit일 경우 실행시간은 1이다.
  • cache miss일 경우 실행시간은 5이다.

코드

def solution(cacheSize, cities):
    answer = 0
    cache = []
    
    for city in [x.lower() for x in cities]:
        if city in cache:
            answer += 1
            if cacheSize > 0: # 캐시가 있는 경우
                cache.remove(city)
                cache.append(city)
        else:
            answer += 5
            if cacheSize > 0: # 캐시가 있는 경우
                if len(cache) == cacheSize:
                    cache.pop(0)
                cache.append(city)
    return answer
profile
섬나라 개발자

0개의 댓글

관련 채용 정보