๐กsolutions )
LRU(Least Recently Used) ์๊ณ ๋ฆฌ์ฆ : ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๋ ์๋ฏธ๋ก, ์ค๋ซ๋์ ์ฌ์ฉํ์ง ์์๋ ๋ฐ์ดํฐ๋ ์์ผ๋ก๋ ์ฌ์ฉํ ํ๋ฅ ์ด ์ ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ํ์ ๋ ์บ์ ์ฌ์ด์ฆ๊ฐ ๊ฝ ์ฐจ๊ณ ์๋ก์ด ์บ์๋ฅผ ๋ฃ์ผ๋ ค๊ณ ํ ๋, ๊ธฐ์กด ์บ์ ์ค ์ต๊ทผ๊น์ง ๊ฐ์ฅ ์ฌ์ฉ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๐ฌ ์ฒซ ๋ฒ์งธ if๋ฌธ -> cacheSize๊ฐ 0์ธ ๊ฒฝ์ฐ ์ฐธ์กฐํ๋ ๊ฐ์ด ์์ผ๋ฏ๋ก cities ๋ชจ๋ ์์๊ฐ cache miss๋ก ์คํ์๊ฐ์ด 5์ด๋ค.
๐ฌ ๋์๋ฌธ์ ๊ตฌ๋ถํ์ง ์์ผ๋ ๋ชจ๋ ์๋ฌธ์๋ก ์ฒ๋ฆฌ -> lower() ๋ฉ์๋
๐ฌ for๋ฌธ -> ๊ฐ city๊ฐ buffer์ ์๋ ์ง ํ์ธํ๋๋ฐ
โ ์๋ ๊ฒฝ์ฐ buffer๊ฐ cacheSize๋งํผ ๊ฝ ์ฐจ ์๋ ์ง ํ์ธํ๋ค.
- cacheSize์ ๊ฐ์ผ๋ฉด ์๋ก์ด ์ฐธ์กฐ๊ฐ์ ๋ฃ์ ์ ์์ผ๋ฏ๋ก -> ์ ์ผ ์ค๋ ์ ์ฐธ์กฐ๋ ์์ popleft()ํ ํ append()
- cacheSize ๋ณด๋ค ์์ผ๋ฉด -> ๊ทธ๋ฅ append()
- 1๋ฒ์ ๊ฒฝ์ฐ๋ cache miss๋ฏ๋ก answer += 5
โก ์๋ ๊ฒฝ์ฐ buffer๋ฅผ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ก ์ ๋ฐ์ดํธ -> remove()๋ก ์ฐธ์กฐ๋ฆฌ์คํธ์์ ํด๋น ์์ ์ ๊ฑฐํ ํ append()๋ก ๋งจ ๋ท์๋ฆฌ์ ์์น์ํค๊ธฐ
๐ฌ ์ฐธ๊ณ ๋ก, popleftํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ์ฌ stack ๋ณด๋ค๋ deque ์๋ฃํ์ ์ฌ์ฉํ๋ค.
๐ซcode )
from collections import deque
def solution(cacheSize, cities):
answer = 0
buffer = deque()
if cacheSize == 0:
return 5 * len(cities)
for city in cities:
city = city.lower()
if city not in buffer:
if len(buffer) == cacheSize:
buffer.popleft()
buffer.append(city)
answer += 5
else:
buffer.remove(city)
buffer.append(city)
answer += 1
return answer
๐ description )
๋ฌธ์ ์ถ์ฒ : programmers.co.kr/learn/courses/30/lessons/17680
์บ์์ง๋๊ฐ๋ฐํ์์ ๊ทผ๋ฌดํ๋ ์ ์ด์ง๋ ์ง๋์์ ๋์ ์ด๋ฆ์ ๊ฒ์ํ๋ฉด ํด๋น ๋์์ ๊ด๋ จ๋ ๋ง์ง ๊ฒ์๋ฌผ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฝ์ด ๋ณด์ฌ์ฃผ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค. ์ดํผ์น์๊ฒ ์๋ฌ๋ฆฌ๋ ์ ์ด์ง๋ฅผ ๋์, DB ์บ์๋ฅผ ์ ์ฉํ ๋ ์บ์ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์คํ์๊ฐ ์ธก์ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ํ์
์ถ๋ ฅ ํ์
์กฐ๊ฑด
์ ์ถ๋ ฅ ์์ |