https://programmers.co.kr/learn/courses/30/lessons/17680
LRU 알고리즘 참고:
https://gingerkang.tistory.com/26
LRU 알고리즘에 대해 검색해보고 알고리즘을 익힌 다음에 직접 구현해보았다.
한마디로 정의하면 가장 오래된 페이지를 버리고 새롭게 추가하는 알고리즘이다.
가장 오래된 페이지는 앞으로도 계속 사용할 일이 없다는 이론을 토대로 만들어진 알고리즘이다.
다만 원래 코드에서는 cacheSize가 0일 때가 고려되지 않았는데, cacheSize가 0인 경우 pop이 되지 않고 append도 되지 않도록 if문 하나를 넣어서 처리해주었다.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
"""
Created by MinSeo on 2022/02/13.
Copyright ⓒ 2021 MinSeo Shin. All rights reserved.
"""
def solution(cacheSize, cities):
answer = 0
cache = []
for city in cities:
temp = city.lower()
if temp not in cache:
if len(cache) >= cacheSize and cacheSize != 0:
cache.pop(0)
if cacheSize != 0:
cache.append(temp)
answer += 5
else:
answer += 1
cache.pop(cache.index(temp))
cache.append(temp)
return answer
|
cs |
'프로그래머스 풀이' 카테고리의 다른 글
프로그래머스 2단계 - 이진 검색 트리 (Python) (0) | 2022.06.26 |
---|---|
프로그래머스 2단계 - n^2 배열자르기 (Python) (0) | 2022.03.11 |
프로그래머스 2단계 - 모음사전 (Python) (2) | 2022.01.28 |
프로그래머스 2단계 - 후보키 (Python) (0) | 2021.12.01 |
프로그래머스 2단계 - 괄호 회전하기 (Python) (0) | 2021.11.17 |