
- 문제분석
주어진 함수의 결과를 캐시에 저장하고, 같은 입력에 대해서는 다시 계산하지 않고 저장된 결과를 반환하도록 하는 것이다.
- 알고리즘 설계
- 캐시 저장소 만들기
- 함수 호출횟수 추적
- 함수의 입력을 문자열로 변환
fn이 호출될대마다 캐시에서 결과를 찾아 있으면 반환
없으면 실제 함수를 호출하고 결과를 캐시에 저장한다.
- 구현
/**
* @param {Function} fn
* @return {Function}
*/
function memoize(fn) {
const cache = new Map();
return function(...args) {
const key = args.toString();
if (cache.has(key)) {
return cache.get(key);
} else {
const result = fn (...args);
cache.set(key, result);
return result
}
}
}
/**
* let callCount = 0;
* const memoizedFn = memoize(function (a, b) {
* callCount += 1;
* return a + b;
* })
* memoizedFn(2, 3) // 5
* memoizedFn(2, 3) // 5
* console.log(callCount) // 1
*/

'알고리즘 > 코딩테스트' 카테고리의 다른 글
| [dfs 기본 문제] dfs 로 모든경우의 수 + - 로 더하기 (2) | 2025.08.25 |
|---|---|
| [프로그래머스] 큰수 만들기 (2) | 2025.08.14 |
| 코딩 테스트를 준비하기 전에 (5) | 2025.07.27 |
| [프로그래머스] 이진 변환 반복하기 (2) | 2025.07.25 |
| [leetcode] 11. Container With Most Water (0) | 2025.05.07 |