โ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/17680?language=python3
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr

๋ฉ๋ชจ๋ฆฌ: 17.5 MB, ์๊ฐ: 64.21 ms
์ง๋๊ฐ๋ฐํ์์ ๊ทผ๋ฌดํ๋ ์ ์ด์ง๋ ์ง๋์์ ๋์ ์ด๋ฆ์ ๊ฒ์ํ๋ฉด ํด๋น ๋์์ ๊ด๋ จ๋ ๋ง์ง ๊ฒ์๋ฌผ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฝ์ด ๋ณด์ฌ์ฃผ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค.
์ด ํ๋ก๊ทธ๋จ์ ํ
์คํ
์
๋ฌด๋ฅผ ๋ด๋นํ๊ณ ์๋ ์ดํผ์น๋ ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ ๊ฐ ๋ก์ง์ ๋ํ ์ฑ๋ฅ ์ธก์ ์ ์ํํ์๋๋ฐ, ์ ์ด์ง๊ฐ ์์ฑํ ๋ถ๋ถ ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์๋ฌผ์ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ์ ์คํ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
์ดํผ์น๋ ์ ์ด์ง์๊ฒ ํด๋น ๋ก์ง์ ๊ฐ์ ํ๋ผ๊ณ ๋ฆ๋ฌํ๊ธฐ ์์ํ์๊ณ , ์ ์ด์ง๋ DB ์บ์๋ฅผ ์ ์ฉํ์ฌ ์ฑ๋ฅ ๊ฐ์ ์ ์๋ํ๊ณ ์์ง๋ง ์บ์ ํฌ๊ธฐ๋ฅผ ์ผ๋ง๋ก ํด์ผ ํจ์จ์ ์ธ์ง ๋ชฐ๋ผ ๋๊ฐํ ์ํฉ์ด๋ค.
์ดํผ์น์๊ฒ ์๋ฌ๋ฆฌ๋ ์ ์ด์ง๋ฅผ ๋์, DB ์บ์๋ฅผ ์ ์ฉํ ๋ ์บ์ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์คํ์๊ฐ ์ธก์ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ๐ปํ์ด
์บ์ ๋ฌธ์ ๋ก ์บ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ LRU(Least Recently Used)๋ฅผ ์ฌ์ฉํ๋ค.
์ฐ์ ์บ์๋ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋๋ ์์ ์ฅ์๋ฅผ ๋งํ๋ค. ๋ฏธ๊ฐ๊ณต ๋ฐ์ดํฐ ๋๋ 1์ฐจ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๋ ๊ฐ์ ๋ค์ ๊ณ์ฐํ๋ ์๊ฐ์ ์ ์ฝํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. ์บ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋์ผ๋ฉด ๊ณ์ฐ์ด๋ ์ ๊ทผ ์๊ฐ์์ด ๋ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
์ด์ LRU์ ๋ํด ์์๋ณด์. LRU๋ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐธ์กฐ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ์์ด๋ค. ์ฌ์ฉ๋ ์ง ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๋ ์์ผ๋ก๋ ์ฌ์ฉ ํ๋ฅ ์ด ๋ฎ๋ค๊ณ ํ๋จํ์ฌ ๋ง๋ค์ด์ง ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฆ, ์บ์๊ฐ ๊ฐ๋ ์ฐจ์ ๋ ์ด์ ๊ณต๊ฐ์ด ์์ ๋, ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ์์ ์ฃผ๋ ์์ ์ด ํ์ํ๋ค. ์บ์ ์์ ์ฐธ์กฐํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๊ณ ํ์ฌ์ ๊ฐ์ ์บ์์ ๋ฃ๋๋ค. ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ํด๋น ๊ฐ์ ๊ฐ์ฅ ์ต๊ทผ ์์น๋ก ๋ฃ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฌธ์ ๋ก ๋์๊ฐ LRU ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ๋ฐ๋ก ํ๋ฅผ ๋ ์ฌ๋ฆด ์ ์๋ค. ๋จผ์ ํ์ ์ต๋ ์ฌ์ด์ฆ๋ฅผ cacheSize๋ก ์ ์ํ์ฌ ํ๊ฐ ๋ค ์ฐพ์ ๋ ์์์ ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๋๋ก ํ๋ค. ์ฆ, ์บ์ ์์ ํด๋น ๋์๊ฐ ์๊ณ ๋ค ์ฐจ ์๋ ์ํ๋ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์๋ก ์ง์ด๋ฃ์ ๋ ์์์ ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๊ฐ ์ง์์ง ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ฏธ ํด๋น ๋์๊ฐ ํ์ ์๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ํด๋น ๋์๋ฅผ ํ์์ ์ง์ฐ๊ณ ํ์ ๋ค์ ๊ทธ ๋์๋ฅผ ๋ฃ์ผ๋ฉด ๊ฐ์ฅ ์ต๊ทผ ์์น๋ก ๋ค์ด๊ฐ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ์์ cache hit์ ๊ฒฝ์ฐ ์คํ์๊ฐ์ 1์ด๊ณ , cache miss๋ 5๋ผ๊ณ ํ๋ค. cache hit์ ์บ์ ์์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๊ณ cache miss๋ ์บ์ ์์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์์ ๋ก์ง์ ์ฒ๋ฆฌํ ๋ answer๋ฅผ ๊ณ์ฐํ๋ฉด ๋๋ค.
๐ป์ฝ๋
from collections import deque
def solution(cacheSize, cities):
answer = 0
cache = deque(list(), cacheSize)
for c in cities:
city = c.lower()
if city not in cache:
cache.append(city)
answer += 5
else:
cache.remove(city)
cache.append(city)
answer += 1
return answer
๐ํ๊ธฐ
์ปดํจํฐ ๊ตฌ์กฐ ์ํ๋ณด๊ณ cache hit, cache miss๋ฅผ ํ๋ ๋ง์ด ๋ค์ด์ ๋ณด๊ธฐ ์ซ์ด์ ์ ๋ดค๋๋ฐ ์ง๊ธ ๋ณด๋ ์๊ฐ๋ณด๋ค ๊ฐ๋จํ ๋ฌธ์ ์๋ค.
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1655. ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์/Python - Gold2 (0) | 2025.02.26 |
---|---|
[๋ฐฑ์ค] 1715. ์นด๋ ์ ๋ ฌํ๊ธฐ/Python - Gold4 (0) | 2025.02.26 |
[๋ฐฑ์ค] 18870. ์ขํ ์์ถ/Python - Silver2 (0) | 2025.02.19 |
[๋ฐฑ์ค] 2206. ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ/Python - Gold 3 (0) | 2025.02.12 |
[๋ฐฑ์ค] 16928. ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์/Python - Gold5 (0) | 2025.02.10 |