https://programmers.co.kr/learn/courses/30/lessons/12924
function solution(n) {
var answer = 0;
var sum = 0;
for(let i = 1; i <= n; i++){
for(let j = i; j <= n; j++){
sum += j;
if(sum == n){
answer++;
break;
}
}
sum = 0
}
return answer;
}
테스트케이스와 정확성은 통과를 했지만 효율성에서 시간초과로 통과하지 못하였다.
반복문을 2번이나 쓴 것이 원인인 것 같다.
function solution(n) {
var answer = 0;
for(let i = 1; i <= n; i++){
if(recursion(i, 0, n)) answer++;
}
return answer;
function recursion(firstnum, sum, n) {
if(sum == n) return true;
if(sum > n) return false;
return recursion(firstnum + 1, sum+firstnum, n)
}
}
숫자의 표현 문제의 키 포인트는 자연수 n을 연속한 자연수들로 표현 하는 방법은 자연수 n의 약수 중 홀수인 약수의 갯수와 같다는 점이다.
function expressions(num) {
var answer = 0;
for(var i=1; i<=num; i++) {
if (num%i == 0 && i%2 == 1)
answer++
}
return answer;
}
자연수 n이 홀수이면 n의 약수는 홀수만 나온다.