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