프로그래머스/메모
[Javascript][메모] 프로그래머스 피보나치 수, 2 x n 타일링
binaryJournalist
2021. 4. 22. 16:32
반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

일단 피보나치 수에서 내가 쓴 함수는 이렇다.
** Javascript
function solution(n) {
let a1 = 0, a2 = 1;
let answer = [a1, a2];
for (var i = 2; i <= n; i++) {
answer.push((answer[i - 1] + answer[i - 2]) % 1234567);
}
// return answer[n] ?? 0;
return answer[n] ? answer[n] : 0;
}
처음에 null 병합 연산자 이용해서 return 했는데 프로그래머스에서는 ES6가 안되는지 에러났었다.
그래서 answer[n] ? answer[n] : 0 으로 변경
** Python (2021.11.23)
def solution(n):
a1 = 0
a2 = 1
answer = 0
for i in range(n - 1):
answer = a1 + a2
a1 = a2
a2 = answer
return answer % 1234567
2 x n 타일링도 결국 피보나치 함수 물어보는 것이기에 이렇게 했다.
위 코드와 거의 같다.
function solution(n) {
let arr = [1, 2];
for (var i = 2; i <= n; i++) {
arr.push((arr[i-1] + arr[i-2]) % 1000000007);
}
return arr[n-1] ? arr[n-1] : 0;
}
아래 식들을 이용하여 해봤는데 시간초과, 런타임에러 떠서 다 실패함.
썼던 함수들은 나중에 꺼내보려고 잠시 기록해둔다.
이건 for문 사용해서 만든 함수
function fibonacciGeneral(number) {
let result = 0;
let a1 = 0, a2 = 1;
if (number <= 0) return a1;
if (number === 1) return a2;
for (var i = 0; i < number; i++) {
result = a1 + a2;
a1 = a2;
a2 = result;
}
return result;
}
재귀함수 호출한 것은 이것
function fibonacciRecursion(n) {
return n <= 1 ? n : fibonacciRecursion(n - 1) + fibonacciRecursion(n - 2);
}
위의 경우 77과 같은 큰 수를 넣었을 때 답이 나오지만 아래의 경우 큰 수는 계산이 오래 걸려서 답이 안 나올 수도 있음
반응형