본문 바로가기
코딩테스트 연습

[Programmers] 캐시

by eddypark 2023. 9. 11.

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