메모이제이션 (Memoization)
메모이제이션은 컴퓨터 프로그래밍에서 사용되는 기법 중 하나로, 이전에 계산한 결과를 저장하여 동일한 입력에 대한 함수 호출시 다시 계산하지 않고 저장된 결과를 반환하는 것이다.
주로 계산비용이 큰 함수의 성능을 개선하기 위해 사용되며, 해시테이블 또는 캐시라는 데이터 구조를 사용하여 구현한다.
함수의 입력값을 해시화하여 해당 값과 연결된 값을 저장하고, 다음에 동일한 입력 값으로 함수가 호출되면 캐시에서 결과 값을 찾아 반환한다.
재귀함수 예시코드
function factorial(n) {
if (n === 0 || n === 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
// 메모화된 팩토리얼 함수
const memoizedFactorial = (function() {
const cache = {};
return function(n) {
if (n === 0 || n === 1) {
return 1;
} else if (cache[n]) { // 캐시에서 결과값 찾기
return cache[n];
} else {
const result = n * memoizedFactorial(n - 1);
cache[n] = result; // 결과값 캐싱
return result;
}
};
})();
console.log(memoizedFactorial(5)); // 처음 호출 시 계산 후 캐싱
console.log(memoizedFactorial(5)); // 이미 캐싱된 값 반환
memoizedFactorial 함수를 통해 팩토리얼 값을 계산하는데 메모이제이션을 활용한다. 이미 계산된 값은 cache 객체에 저장되어 다음에 동일한 인자로 호출될 때 재계산 없이 바로 반환된다.
'CS > IT' 카테고리의 다른 글
[FE, BE] 어드민(admin)이란? (2) | 2024.02.26 |
---|---|
오버로딩과 오버라이딩 (0) | 2023.04.28 |
SI(System Integration)와 SM(System Management) (0) | 2023.03.20 |