โ ๋ฌธ์
๐๏ธ ์์ด๋์ด
1. ์บ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ธ LRU๋ฅผ ๊ตฌํํ๊ธฐ ์ํด deque๋ฅผ ์ฌ์ฉํ๋ค.
2. ๋์ ์ด๋ฆ์ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค.
a. ๋ง์ฝ deque์์ ์์ผ๋ฉด(hit) ์ ๊ฑฐ ํ time += 1
b. deque์์ ์์ผ๋ฉด(miss) ๊ฐ์ฅ ์ผ์ชฝ ์์ ์ ๊ฑฐ ํ time += 1 (LRU๊ฐ ๊ฐ์ฅ ์ค๋๋ ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ)
3. ํด๋น ๋์๋ฅผ ํ์ ๋ฃ์ด์ค๋ค.
** cache๊ฐ 0์ธ ๊ฒฝ์ฐ ์์ธ ์ฒ๋ฆฌ๊ฐ ํ์ํจ. -> hit์ธ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ city๊ฐ์ * 5๋ฅผ ๋ฆฌํดํ๋ค.
๐ป ํ์ด
from collections import deque
def solution(cacheSize, cities):
if cacheSize == 0:
return len(cities) * 5
time = 0
cache = deque([0 for i in range(cacheSize)])
for city in cities:
city = city.lower()
if city in cache:
cache.remove(city)
time += 1
else:
cache.popleft()
time += 5
cache.append(city)
return time