ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toBackend
์๋ฌธ ์ฝ๊ธฐ
์ค๋ณต ๊ณ์ฐ ์ ๊ฑฐ๋ฅผ ํตํ ์ฌ๊ท ํจ์ ์๊ฐ ๋ณต์ก๋ ์ต์ ํ
๐พ Memoization Explained Like You're 5
AI ์์ฝ
Context
๋์ผํ ์ ๋ ฅ๊ฐ์ ๋ํด ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋๋ ๊ณ ๋น์ฉ ๊ณ์ฐ์ผ๋ก ์ธํ ๋ฆฌ์์ค ๋ญ๋น ๋ฐ์. ํนํ Recursive Function ๊ตฌ์กฐ์์ ์ค๋ณต Subproblem์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ฉฐ ์์คํ ์ฑ๋ฅ ์ ํ ์ ๋ฐ.
Technical Solution
- Calculation ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ๋ ๋ณ๋์ ์ ์ฅ์(Notepad)๋ฅผ ํ์ฉํ Memoization ๊ธฐ๋ฒ ๋์
- Check ๋จ๊ณ์์ ๊ธฐ์กด ์ ์ฅ์ ๋ด ๋์ผ ์ ๋ ฅ๊ฐ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์ฐ์ ํ์ธํ๋ ๋ก์ง ์ค๊ณ
- Cache Miss ๋ฐ์ ์์๋ง ์ค์ ๊ณ์ฐ์ ์ํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ์์ ๊ธฐ๋กํ๋ Write-through ๋ฐฉ์ ์ ์ฉ
- Cache Hit ์ ๊ณ์ฐ ๊ณผ์ ์ ์๋ตํ๊ณ ์ ์ฅ๋ ๊ฐ์ ์ฆ์ ๋ฐํํ์ฌ ์ฐ์ฐ๋ ์ต์ํ
- Fibonacci ์์ด๊ณผ ๊ฐ์ ์ค๋ณต ํ์ ๋ฌธ์ ๊ตฌ์กฐ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ง์ ์๊ฐ์์ ์ ํ ์๊ฐ์ผ๋ก ๊ฐ์
์ค์ฒ ํฌ์ธํธ
- Pure Function ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ ์ผ๊ด์ฑ ๋ณด์ฅ - ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ์ ์ฐ์ฐ ์๋ ํฅ์ ์ฌ์ด์ Trade-off ๋ถ์ - ๋ฐ๋ณต๋๋ Subproblem์ ๋น๋์ ๊ณ์ฐ ๋น์ฉ์ ์ธก์ ํ์ฌ ์ ์ฉ ์ฐ์ ์์ ๊ฒฐ์