https://school.programmers.co.kr/learn/courses/30/lessons/12945#qna
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
피보나치 수 % 1234567의 나머지를 구하면 되는 매우 간단한 문제라고 생각했다.
function solution(n) {
var answer = 0;
const fibo = (x,y,cnt)=>{
if(cnt<=n){
y =y%1234567;
return fibo(y,x+y,cnt+1);
}
else return y;
}
return fibo(0,1,2);
}
처음에는 피보나치라는 단어를 보자마자 아무생각없이 재귀함수를 작성했는데,
자연수 n은 n<=100,000이라는 조건으로 인해
n번째 피보나치 수가 int의 자료구조 범위를 벗어나는 정수 오버플로우(integer overflow)가 발생했다.
재귀함수도 마찬가지로, 너무 잦은 재귀함수 호출로 인해 스택 오버플로우가 발생한 것
2단계 문제 치고 너무 쉽다 했어 ~.~
function solution(n) {
var answer = 0;
let x = 0;
let y = 1;
for(let i=1; i<n; i++){
let temp = x;
x = y;
y = (y+temp)%1234567;
}
return y;
}
최종 답은 이것
중간중간 나머지 계산을 해주고, 재귀함수 대신 반복문을 사용하는 것으로 문제를 해결했다.
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스 / set ] 롤케이크 자르기 js javascript (0) | 2024.11.26 |
---|---|
[프로그래머스 | 스택 큐 ] 올바른 괄호 js javascript (0) | 2024.11.22 |
[프로그래머스 / 문자열] 이진 변환 반복하기 js javascript (1) | 2024.11.13 |
[PCCP 기출문제] 동영상 재생기 js javascript (0) | 2024.11.10 |
[프로그래머스 / stack] 과제 진행하기 js javascript (0) | 2024.09.05 |