Algorithm/프로그래머스
[프로그래머스/Python파이썬] 캐시(2018 카카오 코딩테스트 1차)
meeeeejin
2021. 4. 27. 15:46
문제 링크: programmers.co.kr/learn/courses/30/lessons/17680
문제 설명
LRU 알고리즘을 사용하기 위해 리스트를 이용합니다. 리스트의 맨 앞부분에 있는 요소를 제일 오래 참조가 안된 것(LRU)으로 보고 맨 뒤에 있는 요소를 제일 최근에 참조된 것(MRU)으로 생각합니다.
또한 캐시의 크기가 0인 경우를 예외 처리해주어야 합니다.
- 캐시의 크기가 0인 경우 모두 cache miss 처리하여 답을 반환
소스코드
def solution(cacheSize, cities): execTime = 0 cache = [] # 캐시가 없을 경우 if cacheSize == 0: return len(cities) * 5 for city in cities: # cache hit if city.lower() in cache: cache.remove(city.lower()) cache.append(city.lower()) # 해당 도시를 리스트의 맨 뒤로 보내기 execTime += 1 # cache miss else: if len(cache) == cacheSize: cache.pop(0) # LRU 알고리즘으로 캐시 교체 cache.append(city.lower()) execTime += 5 return execTime
728x90