[Algorithm]_조합수(memoization)

이지·2021년 11월 14일

algorithm

목록 보기
9/10

memoization이란, (순수)함수를통해 반환된 연산값을 기억해뒀다가 불필요한 재연산을 막아 성능을
개선하는 방법이다. 리액트에서 리렌더링을 막을 때, usecallback과 usememo를 활용하는 것도
이것의 일종이라고 볼 수 있다.

function solution(n, r){         
                let answer=[];
  // 이차원 배열을 생성 후, 0으로 초기값을 세팅한다. 
                let dy= Array.from(Array(35), () => Array(35).fill(0));
                
                function DFS(n, r){
                  // 값이 들어있으면, 값을 반환. 
                    if(dy[n][r]>0) return dy[n][r];
                  //nCr || nC0 === 1 을 반환 
                    if(n===r || r===0) return 1;
                  //그 외의 경우에는 가지치기,  nCr = n-1Cr-1 + n-1Cr.. 
                  // 연산과 동시에 값을 할당.   
                    else return dy[n][r]=DFS(n-1, r-1)+DFS(n-1, r);
                }
                answer=DFS(n, r);
                return answer;
            }

            console.log(solution(5, 3));
profile
이지피지레몬스퀴지🍋

0개의 댓글