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;
}
포문안에 삼항연산자로 예외처리, 방법은 같다.