위 문제는 피보나치 수열을 사용하면 쉽게 해결할 수 있다.
구글링 해보면 풀이방법과 해답 코드를 쉽게 찾을 수 있으니 문제 풀이는 넘어가려고 한다.
❌ Solution ( 85 / 100 ) 정확성 70, 효율성 15
function solution(n) {
let answer = 0;
const dp = Array(n-1).fill(0)
dp[0] = 1
dp[1] = 2
for(var i = 2; i < n; i++){
dp[i] = (dp[i-1] + dp[i-2]) % 1000000007
}
return dp[n-1];
}
피보나치 수열을 구현하기 위해 위처럼 코드를 작성했는데, 효율성 테스트를 통과하지 못했다.
구글링을 해보면 상위에 노출되는 여러 코드 역시 마찬가지였다.
✅ Solution ( 100 / 100 )
function solution(n) {
let answer = 0;
const dp = Array(n).fill(0)
dp[1] = 1
dp[2] = 2
for(var i = 3; i <= n; i++){
dp[i] = (dp[i-1] + dp[i-2]) % 1000000007
}
return dp[n];
}
윗 코드를 이렇게 수정해주면 효율성 테스트를 통과한다.
근데 아무리 봐도 도통 이유를 모르겠다..
혹시 이유를 아시는 분은 관련 포스팅이나 아이디어 댓글로 남겨주시면 감사드립니다..
첫번째 코드도
let answer = 0
코드만 삭제하면 효율성 테스트 통과된다.
'알고리즘' 카테고리의 다른 글
백준 JS | 1004번: 어린왕자 (0) | 2023.01.25 |
---|---|
프로그래머스 JS | 인사고과 (0) | 2023.01.20 |
백준 JS | 재귀의 귀재 (0) | 2022.12.29 |
백준 JS | 좌표 압축 (0) | 2022.12.26 |
프로그래머스 JS | 다리를 지나는 트럭 (0) | 2022.11.12 |