[프로그래머스] 캐시 풀이

 


1. 문제

https://programmers.co.kr/learn/courses/30/lessons/17680

2. 풀이

  • cash 역할을 하는 딕셔너리를 활용합니다.
  • 딕셔너리에 있는 요소들 중에 가장 마지막에 사용한 요소를 찾아서 제거합니다.
def solution(cacheSize, cities):
    if cacheSize == 0:
        return len(cities)*5

    cash = {}
    answer = 0
    cash_num = 0
    for i in range(len(cities)):
        if cities[i].lower() not in cash:     # cities에 글자가 캐시에 없으면
            if cacheSize <= len(cash):
                key_min = min(cash.keys(), key=(lambda k: cash[k]))
                del (cash[key_min]) 
            answer += 5
        else:                           # 글자가 캐시에 있으면
            answer += 1

        cash[cities[i].lower()] = cash_num
        cash_num += 1

    return answer