


def solution(cacheSize, cities):
answer = 0
db_list = []
for db in cities:
db = db.lower()
if not db in db_list:
if len(db_list) < cacheSize:
db_list.append(db)
else:
db_list.append(db)
db_list.pop(0)
answer += 5
else:
db_list.pop(db_list.index(db))
db_list.append(db)
answer += 1
return answer
LRU(Least Recently Used) 알고리즘을 쓰면 금방 풀리는 문제이다.
주의점 : 캐시 사이즈가 0일 경우도 생각해야 한다.
아래는 LRU 알고리즘을 사용한 풀이이다.
cacheSize = 3
reference = [4, 2, 3, 4, 5, 6, 5, 4, 7]
cache = []
for ref in reference:
if not ref in cache:
if len(cache) < cacheSize:
cache.append(ref)
else:
cache.pop(0)
cache.append(ref)
else:
cache.pop(cache.index(ref))
cache.append(ref)
'코딩테스트 연습' 카테고리의 다른 글
[Softeer] 지도 자동 구축 (0) | 2023.09.14 |
---|---|
[Softeer] 비밀 메뉴 (0) | 2023.09.13 |
[Programmers] 괄호 회전하기 (0) | 2023.09.12 |
[Programmers] n^2 배열 자르기 (0) | 2023.09.08 |
[Programmers] 땅따먹기 (0) | 2023.09.08 |