https://programmers.co.kr/learn/courses/30/lessons/12914
function solution(n) {
// let fibo = [0,1,2];
let result = 0;
let first = 1;
let second = 2;
if (n == 1) result = first;
else if (n == 2) result = second;
else {
for (var i = 3; i <= n; i++) {
// fibo.push((fibo[i - 2] + fibo[i - 1])%1234567);
result = (first + second) % 1234567;
first = second;
second = result;
}
}
// console.log(fibo);
return result;
}
let n = 4;
console.log(solution(n));
뭔가 규칙이 있을까 하고 차례대로 써보다가 피보나치수열인걸 발견하였다.
그래서 그냥 피보나치수열을 구현하는거구나하고,
let fibo = [0,1,2]
for (var i = 3; i <= n; i++) {
fibo.push((fibo[i - 2] + fibo[i - 1]));
}
이렇게 하여 fibo배열의 마지막을 pop하여 답을 도출하려고 하였다.
그러나 7번부터 다틀렸다고 뜨길레 문제를 다시읽어보니 %1234567 한 결과를 리턴하라 하였다.
%1234567을 했더니 틀렸다고 나온 테케는 다 맞았지만 1번테케가 계속 틀렸다고 떴다.
질문게시판을 살펴보니 long[] dp = new int[n+1]
하면 메모리때문에 막힌다는 글이 있었다.
그래서 배열로 풀지않고 그냥 변수를 변경하면서 풀었더니 성공하였다.