๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/17680
ํ์ด
# ํ๋ก๊ทธ๋๋จธ์ค 2๋จ๊ณ - [1์ฐจ] ์บ์
from collections import deque
def solution(cacheSize, cities):
if cacheSize == 0: return 5 * len(cities)
answer = 0
cache = deque(maxlen=cacheSize)
for city in cities:
city = city.upper()
if city in cache: # cahce hit
cache.remove(city)
cache.append(city)
answer += 1
else: # cache miss
cache.append(city)
answer += 5
return answer
LRU ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ์์๋ค๋ฉด ๋งค์ฐ ์ฝ๊ฒ ํ ์ ์์์ ๊ฒ์ด๋ค.
๋ฌธ์ ๋ฅผ ์ฒ์ ๋ดค์๋ ์คํ์ ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ฐ ์๋ค์ ์ญ์ ์ ์ฝ์ ์ด O(1)์ธ ๋ฐํฌ๋ฅผ ๋ ์ฌ๋ ค์ ์ด๋ฒ ๋ฌธ์ ์ ์ฌ์ฉํ์๋ค.
์ผ๋จ ์บ์ ํฌ๊ธฐ๊ฐ 0์ด๋ผ๋ฉด ๊ฐ์ด ๋ค์ด์ฌ๋๋ง๋ค ์บ์๋ฅผ ๊ต์ฒดํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋์์ ์ * ๊ฑธ๋ฆฌ๋ ์๊ฐ(5) ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์บ์๋ฅผ ๋ฐํฌ๋ก ์ ์ธํด์ฃผ๊ณ
์ ๋ ฅ์ผ๋ก ๋ฐ์ ๊ฐ์ ํ๋์ฉ ๋น๊ตํ๋๋ก ํ๋ค.
์ฒซ๋ฒ์งธ ์กฐ๊ฑด์ธ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ์ง ์์ผ๋ฏ๋ก ๋ชจ๋ ๋๋ฌธ์๋ก ๋น๊ต๋ก ํต์ผ ํ์๋ค.
๊ทธ ํ ๋ง์ฝ์ ์ ๋ ฅ๊ฐ์ด ์บ์ ์์ ์กด์ฌํ๋ค๋ฉด ๊ธฐ์กด์ ๊ฐ์ ์ ๊ฑฐํ๊ณ ๋ฑ์ ๋งจ ๋์ ๊ฐ์ ์ถ๊ฐํด ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์บ์ ์ ์ค์ด๋ผ๋ฉด ์คํ์๊ฐ์ด 1์ด๋ฏ๋ก ๋ํด์ค๋ค.
๊ทธ ์ธ์ ๊ฒฝ์ฐ ์บ์ ๋ฏธ์ค๋ผ๋ฉด ๋ฑ์ ๋์ ๊ฐ์ ์ถ๊ฐํด์ค๋ค.
** ์ฌ๊ธฐ์ deque์ ์ต๋ ๊ธธ์ด๋ฅผ cacheSize๋ก ํด๋์์ผ๋ฏ๋ก else์์ ๊ตณ์ด ๋น๊ต๋ฅผ ํ์ง ์์๋ ์ฌ์ด์ฆ ํฌ๊ธฐ๋ฅผ ๋์ด๊ฐ๋ฉด ๋งจ ์์ ๊ฐ์ด ๋น ์ง๊ฒ ๋๋ค.