문제
내 풀이
function solution(n) {
var answer = 0;
for(let i = 1; i < n + 1; i++){
let sum = 0;
for(let j = i; j < n + 1; j++){
sum += j;
if (sum === n) {
answer += 1;
break
}
else if(sum > n) break;
}
}
return answer;
}
정확성 검사는 다 통과했지만 효율성 검사에서 시간초과
정답
function solution(n) {
let answer = 0;
for (let i = 1; i <= n; i++) {
if (n % i === 0 && i % 2 === 1) answer++;
}
return answer;
}
검색해보니 다음과 같은 공식을 활용해서 해결한 코드가 있었다.
주어진 자연수를 연속된 자연수의 합으로 표현하는 방법의 수는 주어진 수의 홀수 약수의 개수와 같다