[programmers ] 캐시 (2018 카카오 블라인드 채용)
resilient
·2021. 9. 1. 19:08
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17680
- 이 문제는 LRU 알고리즘을 사용해서 캐시 구현을 하라고 명시되어 있다.
LRU 알고리즘은 이 블로그 를 참고했다. - LRU 알고리즘만 이해하면 나머지는 쉽게 해결되었다.
- 여기서 처음에 cacheSize가 0일 때 처리를 안해서 시간이 더 소요됐다.
def solution(cacheSize, cities):
# 캐시사이즈가없으면 참조할게 없으니까 실행시간이 5씩 소요된다.
if cacheSize == 0:
return len(cities) * 5
else:
cache = []
answer = 0
for city in cities:
# Miss!
city = city.lower()
if city not in cache:
answer += 5
if len(cache) < cacheSize:
cache.append(city)
else:
cache.pop(0)
cache.append(city)
# Hit!
else:
answer += 1
cache.pop(cache.index(city))
cache.append(city)
return answer
반응형
'자료구조 & 알고리즘 > 프로그래머스(programmers)' 카테고리의 다른 글
[programmers] 실패율 (2019 카카오 블라인드 채용) (0) | 2021.09.04 |
---|---|
[programmers] 보석 쇼핑 (2020 카카오 인턴십) (1) | 2021.09.03 |
[programmers] 뉴스클러스터링(2018 카카오 블라인드 채용) (0) | 2021.08.30 |
[programmers] 크레인인형뽑기게임 (2019 카카오 개발자 겨울 인턴십) (0) | 2021.08.24 |
[programmers] 튜플 (2019 카카오 개발자 겨울 인턴십) (0) | 2021.08.23 |