์บ์
์ดํผ์น์๊ฒ ์๋ฌ๋ฆฌ๋ ์ ์ด์ง๋ฅผ ๋์, DB ์บ์๋ฅผ ์ ์ฉํ ๋ ์บ์ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์คํ์๊ฐ ์ธก์ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ ํ์
- ์บ์ ํฌ๊ธฐ(cacheSize)์ ๋์์ด๋ฆ ๋ฐฐ์ด(cities)์ ์ ๋ ฅ๋ฐ๋๋ค.
- cacheSize๋ ์ ์์ด๋ฉฐ, ๋ฒ์๋ 0 โฆ cacheSize โฆ 30 ์ด๋ค.
- cities๋ ๋์ ์ด๋ฆ์ผ๋ก ์ด๋ค์ง ๋ฌธ์์ด ๋ฐฐ์ด๋ก, ์ต๋ ๋์ ์๋ 100,000๊ฐ์ด๋ค.
- ๊ฐ ๋์ ์ด๋ฆ์ ๊ณต๋ฐฑ, ์ซ์, ํน์๋ฌธ์ ๋ฑ์ด ์๋ ์๋ฌธ์๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์๋๋ค. ๋์ ์ด๋ฆ์ ์ต๋ 20์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์ถ๋ ฅ ํ์
- ์ ๋ ฅ๋ ๋์์ด๋ฆ ๋ฐฐ์ด์ ์์๋๋ก ์ฒ๋ฆฌํ ๋, ์ด ์คํ์๊ฐ์ ์ถ๋ ฅํ๋ค.
์กฐ๊ฑด
- ์บ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ LRU(Least Recently Used)๋ฅผ ์ฌ์ฉํ๋ค.
- cache hit์ผ ๊ฒฝ์ฐ ์คํ์๊ฐ์ 1์ด๋ค.
- cache miss์ผ ๊ฒฝ์ฐ ์คํ์๊ฐ์ 5์ด๋ค.
ํ์ด
def solution(cacheSize, cities):
cache = []
answer = 0
if cacheSize == 0 : return len(cities) * 5
for r in cities :
x = r.lower()
if not x in cache:
if len(cache) < cacheSize:
cache.append(x)
else :
cache.pop(0)
cache.append(x)
answer += 5
else :
cache.pop(cache.index(x))
cache.append(x)
answer += 1
return answer
ํ์ด ๊ณผ์
์บ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ LRU(Least Recently Used)
cache hit
: ์๋ก์ด ์ฐธ์กฐ๊ฐ์ด ์บ์์์ ์๋ค๋ฉด ๊ทธ ์ฐธ์กฐ๊ฐ์ ๊ฐ์ฅ ์ต๊ทผ์ผ๋ก ์ฎ๊ธด๋ค.
cache miss
: ์๋ก์ด ์ฐธ์กฐ๊ฐ์ด ์บ์์์ ์๋ค๋ฉด ๊ฐ์ฅ ์ค๋๋ ์ฐธ์กฐ๊ฐ์ ์์ ๊ณ ์๋ก์ด ์ฐธ์กฐ๊ฐ์ ์ถ๊ฐํ๋ค.
์ฐธ์กฐ๊ฐ 7 3
์ด๊ธฐ๊ฐ | cache miss | cache hit |
3 | 7 | 3 |
2 | 3 | 7 |
4 | 2 | 2 |
'Developer > ๐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/python] ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) | 2020.07.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์์ ๋์งํ (0) | 2020.07.10 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์์ถ (0) | 2020.07.08 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์ ํ์ ์๊ฐ (0) | 2020.07.08 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์คํ์ฑํ ๋ฐฉ (0) | 2020.07.08 |