Level2️⃣ - 숫자의 표현

2024. 3. 27. 12:43알고리즘/프로그래머스

https://school.programmers.co.kr/learn/courses/30/lessons/12924

 

프로그래머스

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

programmers.co.kr

자연수 n이 주어졌을 때, 연속된 자연수의 합으로 구할 수 있는 경우의 수를 구하는 문제이다.

그렇다면 1부터 차례대로 자연수를 연속적으로 더해본다. 이때 주어진 n보다 크면 안된다. 같거나 작은 경우에 계속 연속적으로 더해주고 연속된 자연수의 합으로 표현할 수 있는지 확인한다.

function solution(n) {
   let ret = 0;
   for(let i = 1; i<=n; i++){
       let sum = i;
       for(let j = i+1; sum<=n ;j++){
           if(sum===n) {
               ret++;
               break;
           }
           sum+=j;
       }
   }
   return ret;
}

1+2+3+4+5 = 15 이므로 1부터 시작했을 경우 연속적인 자연수의 합으로 표현이 가능하다.

2+3+4+5+6 > 15 이므로 2부터 시작했을 경우에는 연속적인 자연수의 합으로 표현이 불가능하다.

3+4+5+6 > 15 이므로 3부터 시작했을 경우에도 마찬가지로 불가능하다.

7+8 = 15 이므로 7부터 시작했을 경우에는 연속적인 자연수의 합으로 표현이 가능하다.

n 자기 자신도 포함되므로 15도 정답으로 간주한다.