[프로그래머스 | Javascript] 숫자의 표현

박기영·2023년 1월 12일
0

프로그래머스

목록 보기
116/159

solution

function solution(n) {
    let count = 0;
    
    outer:for(let i = 1; i <= n; i++){
        let sum = 0;
        
        for(let j = i; j <= n; j++){
            sum += j;
            
            if(sum > n){
                continue outer;
            }
            
            if(sum === n){
                count += 1;
            }
        }
    }
    
    return count;
}

반드시 연속적인 자연수의 합만으로 n을 만드는 것이 허용되므로, for문을 사용했다.

i를 통해 시작하는 자연수를 지정해준다.
i부터 n까지 증가하는 j를 누적합하면서
n보다 커져버리는 경우 i를 증가시켜서 시작 자연수를 변경한다.
누적합이 n과 일치하면 정답이므로 count를 증가시킨다.

다른 분들이 풀이를 봤는데, 수학적으로 접근하신 분이 계셨다.
다만...아무리도 봐도 필자가 이해를 못해서 여기서 설명을 할 수는 없을 것 같다.

대신, 구글링을 통해 얻은 다른 분의 풀이를 첨부하겠다.

data-make님 블로그

이 분은 C++로 하신 것 같은데, 같은 문제이기도 하고, 설명을 잘해놓으셔서 참고하면 좋을 것 같다.
이 분의 논리가 아무래도 이해 못했던 다른 분의 풀이인 것 같다.

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글