메모이제이션은 컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술이다. 동적 계획법의 핵심이 되는 기술이다. -위키백과
< 예시 >
피보나치수열을 만들때 일반적으로 재귀를 사용해서 풀수 있지만 그렇게 된다면 반복되는 수가 너무 많아서 작동이 느리고 실행이 안될수 있다
이때 memoization를 이용해서 반복되는 수행을 제거해 실행을 시키는 것이다
let fibonacci = function (n) {
const memo = [0, 1];
const aux = (n) => {
// 이미 해결한 적이 있으면, 메모해둔 정답을 리턴한다.
if (memo[n] !== undefined) return memo[n];
// 새롭게 풀어야하는 경우, 문제를 풀고 메모해둔다.
memo[n] = aux(n - 1) + aux(n - 2);
return memo[n];
};
return aux(n);
};
https://www.devh.kr/2020/Understanding-Memoization-In-JavaScript/