ํฌ์ŠคํŠธ

๐ŸŒ“ Memoization - ๋ฉ”๋ชจ์ด์ œ์ด์…˜

๐Ÿ’ซ Memoization


๋ถ„ํ• ์ •๋ณต์˜ ์žฅ์ (์ง๊ด€์ ์ด๊ณ  ๊ฐ„๊ฒฐ)๊ณผ ๋™์  ๊ณ„ํš๋ฒ•์˜ ์žฅ์ (๋ถ€๋ฌธ์ œ ํ•ด๋‹ต์˜ ์žฌ์‚ฌ์šฉ)์„ ๊ฒฐํ•ฉ
๋ถ€๋ถ„์ ์ธ ๊ฒฐ๊ณผ๋“ค์„ ๊ธฐ๋กํ•œ ํ›„ ๋‚˜์ค‘์— ํ•„์š”ํ•  ๋•Œ ๋‹ค์‹œ ๊ณ„์‚ฐํ•  ํ•„์š” ์—†์ด ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•

@ 4_0001

๋ถ„ํ• ์ •๋ณต์˜ ์žฅ์ /์™ธ๊ด€ (์ง๊ด€์ ์ด๊ณ  ๊ฐ„๊ฒฐ)
๋™์ ๊ณ„ํš๋ฒ•์˜ ์žฅ์ /๋‚ด๋ถ€ (์„ฑ๋Šฅ - ๋ถ€๋ฌธ์ œ ํ•ด๋‹ต์˜ ์žฌ์‚ฌ์šฉ)
๊ฒฐํ•ฉ

๋ถ„ํ• ์ •๋ณต์˜ ๊ฐœ์„ ์ด๋ƒ, DP์˜ ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ์ด๋ƒ
(์–ด๋Š์ชฝ์„ ๊ฐœ์„ ์‹œ์ผฐ๋Š”๊ฐ€์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์žˆ์ง€๋งŒ ์ผ๋‹จ์€)

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ์ƒ์‹œ์ผœ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ์ด์ ์„ ์–ป์Œ

1
2
3
4
5
6
7
8
9
10
int[] M = new int[MAX_SIZE]{0, 1};

int MemoFib(int n)
{
	if (n == 0) return 0;
	if (n == 1) return 1;
	if (M[n] == 0)
		M[n] = memo_fib(n - 1) + memo_fib(n - 2);
	return M[n];
}
์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.