난이도: Lv.2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/12945
알고리즘
피보나치 수를 계산할 때 배열에 액세스하고 계산 결과를 1234567로 나머지 연산하여 push한다.
나머지 연산을 해서 push하는 이유는 n이 커지면 피보나치 수열의 결과값에 오버플로우가 발생하기 때문
코드
function solution(n) {
const fiboArr = [0, 1];
for (let i = 2; i <= n; i++) {
fiboArr.push((fiboArr[i - 2] + fiboArr[i - 1]) % 1234567);
}
return fiboArr[n];
}
주저리
1학년 시절 파이썬 배우면서 피보나치 수열도 했었는데 재귀함수로 풀면 죽을 때까지도 결과 안나온다는 말씀을 해주셨던게 기억이 난다. 처음에 나머지 연산 안하고 배열에 집어넣었었는데 케이스 7번인가부터 와장창 실패길래 왜그런가 했더니 오버플로우 난다는 글을 봤다. js 하면서 오버플로우 한번도 신경 안써봤는디 멋쓱
'코딩테스트' 카테고리의 다른 글
[JS] 카펫 (0) | 2023.11.16 |
---|---|
[JS] 짝지어 제거하기 (0) | 2023.11.15 |
[JS] 다음 큰 숫자 (0) | 2023.11.13 |
[JS] 숫자의 표현 (1) | 2023.11.10 |
[JS] 이진 변환 반복하기 (0) | 2023.11.10 |