문제
내 풀이
function solution(n) {
let arr = [0, 1];
for(let i = 2; i < n + 1; i++){
arr.push((arr[i-2] + arr[i-1]) % 1234567);
}
return arr[n];
}
먼저, 가장 익숙한 풀이법인 재귀로 풀었지만 시간초과가 났다. 불필요한 연산이 중복되어 시간복잡도와 함수 호출 스택에 무리가 많이가기 때문.
그래서 반복문으로 풀이 방법을 바꿨지만, 계속 답이 틀려서 답답했다. 검색해보니 n번째에만 1234567을 나눠주는 것이 아니고 매번 나눠줘야 했다. 문제 설명이 불친절한 건 줄 알았는데 이유가 있는거였다. 여기서 확인할 수 있다.