첫 블로그 게시물인데,, 일단 일기 쓰듯 적어본다.
중학교 1학년 과정에서 수학을 포기했다.
피보나치 수열이라는 것은 들어보기만 했지 만들기 위해 노력을 하는 날이 올 줄이야,,
수(num)를 입력 받아 num + 1개 값을 가진 배열을 생성하는 것이 오늘의 목표였다.
제공된 정보는 0번째는 0, 1번째는 1이라는 것.
머릿속으로 굴려보니 알고리즘이 대충 나오게 되었다.
시작조차 어떻게 해야 할지 막막했다.
일단 구한 값들을 모아줄 빈 array를 선언하고,
let arr = [];
디폴트 값이자 문제에도 나온 0번째, 1번째 피보나치 수를
let before_second = 0;
let before_first = 1;
이후 나올 반복문에서 쓰일 변수에 할당했다.
이러면 조건문을 쓸 때 좀 더 간결해질 것이다.
조건문은 수없이 많은 오답을 경험하며 수정했다.
처음엔
for(i = 0; i<=num; i = i + before_first)
이렇게 만들어보기도 하고,
for(i = 1; i<=num; i = before_first + before_second)
이렇게 만들어 보기도 했다.
실행문으로는 알고리즘 3, 4번에 맞추어 만들어 보기로 했다.
{
before_second = before_first;
before_first = i;
arr.push(i);
}
실행문은 값을 할당하는 과정이 꽤 맘에 드는데, 조건문이 이를 따라오지 못한다.
문제를 잘 읽어보니 num + 1 개의 값을 가진 배열(arr)을 return해야 하는데,
이에 맞는 조건을 만들기 위해서는 조건식을 수정해야 했다.
for (i=0;arr.length<=num;i=a+b)
arr의 원소의 갯수가 num의 값보다 클 때 멈추면 되더라,
오늘 문제 푸는 과정은 밥먹으면서까지 고민하며 풀다보니
이게 사람 사는게 맞나 싶어 좀 슬펐지만,
나름 쉽지 않았던 문제, 도전하는 것이 즐거웠다.
function fibonacci(num) {
let arr = [];
before_second = 0;
before_first = 1;
for (i = 0; arr.length <= num; i = before_second + before_first){
before_second = before_first;
before_first = i;
arr.push(i);
}
return arr;
}