Tribonacci Sequence ( 6 kyu )

문제

Well met with Fibonacci bigger brother, AKA Tribonacci.

As the name may already reveal, it works basically like a Fibonacci, but summing the last 3 (instead of 2) numbers of the sequence to generate the next. And, worse part of it, regrettably I won’t get to hear non-native Italian speakers trying to pronounce it :(

So, if we are to start our Tribonacci sequence with [1, 1, 1] as a starting input (AKA signature), we have this sequence:

[1, 1 ,1, 3, 5, 9, 17, 31, ...]

문제가 더 있지만 생략

그냥 피보나치와 비슷하게 이전 세개의 합을 배열에 추가하는 문제

풀이

function tribonacci(signature,n){
  let result = signature;
  if ( n < 3 ) return result.slice(0,n);
  for ( let i = 3; i < n; i++ ) {
    result[i] = result[i-3] + result[i-2] + result[i-1];
  }
  return result;
}

그냥 결과를 담는 배열에 n이 3보다 작은경우 예외처리를 하고, 나머지는 배열에 원소를 추가해 리턴

다른 사람의 풀이

function tribonacci(s,n){
  var arr = [];
  for(var i=0; i<n; i++) {
    arr.push((i<3) ? s[i] : arr[i-1]+arr[i-2]+arr[i-3]);
  }
  return arr;
}

포문안에 삼항연산자로 예외처리, 방법은 같다.


'자료구조, 알고리즘 > Codewars 문제' 카테고리의 다른 글

Perimeter of squares in a rectangle ( 5 kyu )  (0) 2017.11.29
Palindrome chain length ( 5 kyu )  (0) 2017.11.29
Valid Braces ( 4 kyu )  (0) 2017.11.27
Who likes it? ( 6 kyu )  (0) 2017.11.27
Unique In Order ( 6 kyu )  (0) 2017.11.26

+ Recent posts