프로그래머스
[프로그래머스] Lv.2 [1차] 캐시 [Python, 파이썬]
YoonJuHan
2023. 5. 30. 23:33
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17680#qna
- 2018 KAKAO BLIND RECRUITMENT 문제
- LRU (Least Recently Used)를 구현해야 하는 문제
- 🔑 :
- 캐시 사이즈 = 4
- 현재 lru = [1, 2, 3, 4]
- 새로 들어온 도시가 2일 때
- lru = [2, 3, 4, 2] 가 아닌 lru = [1, 3, 4, 2]가 되어야 한다.
def solution(cacheSize, cities):
answer = 0
lru = [] # 캐시 저장 리스트
for city in cities: # 도시이름을 쭉 방문
if city.lower() in lru: # 대소문자 구분 때문에 소문자로 변환 후 캐시에 있는지 확인
answer += 1 # 캐시에 적중했으면 +1
lru.pop(lru.index(city.lower())) # 적중한 캐시를 빼냄
else:
answer += 5 # 캐시 적중 실패 시 +5
lru.append(city.lower()) # 캐시에 도시이름 넣기
if len(lru) > cacheSize: # 캐시 크기보다 커지면
lru.pop(0) # 가장 먼저 들어간 캐시 빼냄
return answer