자바스크립트 코딩테스트 연습 9일차

Y·2020년 8월 9일
0
post-thumbnail

문제


Memoization을 이용하여 n번째 피보나치 수를 구하는 함수를 구현하라는 문제였다.

내 풀이


var fibonacci = function(n) {
  
  var memory = {};
  var answer
  return answer = (function fib(n){
    
    if(n===0 || n===1){
      memory[n] = n;
    }else{
      var saveNum1 = memory[n-1] || fib(n-1);
      var saveNum2 = memory[n-2] || fib(n-2);
      var result = saveNum1 + saveNum2 ;
      memory[n] = result
    }
    return memory[n]
  })(n);
}

클로저를 활용하여, 현재 계산되는 값들을 저장하고, 이미 한번 계산된 값은 다음번 호출때, 바로 값이 할당된다. 클로저를 활용하여 memory 객체를 자유변수처럼 사용하였고, 피보나치수를 구하는 내부함수는 외부함수의 스코프에 접근할수 있게 만들기 위해 즉시실행함수로 구현했다.

공부


우선적으로 Memoziation이 뭔지 공부했다. 메모이제이션이란 프로그래밍을 할 때 반복되는 결과를 메모리에 저장해서 다음에 같은 결과가 나올 때 빨리 실행하는 코딩 기법을 말한다. 따라서, 재귀함수가 돌때마다 그 값을 저장해놓으면 되는 것이었다.

profile
연세대학교 산업공학과 웹개발 JavaScript

0개의 댓글