DevLog:-)

[프로그래머스][JavaScript]-숫자의 표현 본문

카테고리 없음

[프로그래머스][JavaScript]-숫자의 표현

hyeon200 2023. 7. 19. 23:52
반응형

문제

숫자의 표현

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

코드

function solution(n) {
    let answer = 1;//자기 자신은 미리 1로 추가함
    let k;
    for(let i = 1; i<=(n/2);i++){
        k = i;
        for (let j = i+1; j <n;j++){
            k+=j;
            if(k == n){
                answer++;break;}
            else if(k >n){break;}
        }
    }
    
    return answer;
}

이중 for문을 이용해 간단하게 해결할 수 있다. 

 

 

시간초과 코드😭

function solution(n) {
    var answer=1;
    let end = parseInt((n/2)+1);
    //for(let i =1;i<=end;i++){ arr.push(i); }
    let arr =[...Array(end)].map((v,i) =>i+1);
    
    for(let i =0;i<end;i++){
        (arr.slice(i,end)).reduce((s,cv)=>{
            if(s+cv == n){answer++; return;}
            else if(s+cv >n){return;}
            return s+cv;
        })
    }
    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;
}

굉장히 짧은 코드인데 수학적으로 푼 코드라고 할 수 있다. 👍👍

=> [자연수를 연속되는 자연수들의 합으로 표현할 수 있는 방법의 수 = 자연수의 약수 중에서 홀수인 수의 개수]

 

반응형