프로그래머스. 2018 KAKAO BLIND RECRUITMENT. Level 2. 캐시 파이썬 풀이
문제링크 https://programmers.co.kr/learn/courses/30/lessons/17680
LRU 알고리즘 : https://ko.wikipedia.org/wiki/Least_Recently_Used
def solution(cacheSize, cities):
answer = 0
# 현재 캐시에 있는 도시
q = []
# 캐시사이즈가 0이라면 모든 도시의 실행시간이 5가 걸린다
if cacheSize == 0:
return 5*len(cities)
else: # 캐시사이즈 != 0
for city in cities: # 도시를 하나씩 돌며
city = city.lower() # 소문자로 변환
if not city in q: # 캐시에 없다면
# 캐시의 꽉 찼다면 LRU에 의하여 맨처음 제거
if len(q) == cacheSize:
q.pop(0)
q.append(city) # 캐시에 추가
answer += 5 # 캐시미스이므로 실행시간 5
else: # 캐시에 있다면
# LRU에 따라 캐시에 있는 도시를 맨 뒤로
q.pop(q.index(city))
q.append(city)
answer += 1
return answer