알고리즘
프로그래머스 JS | 2 x n 타일링 ( feat.시간초과 )
3jun
2023. 4. 29. 19:46
위 문제는 피보나치 수열을 사용하면 쉽게 해결할 수 있다.
구글링 해보면 풀이방법과 해답 코드를 쉽게 찾을 수 있으니 문제 풀이는 넘어가려고 한다.
❌ 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
코드만 삭제하면 효율성 테스트 통과된다.