개발하는 kim-hasa

[c++][프로그래머스] 숫자의 표현 본문

Algorithm/Programmers(c++)

[c++][프로그래머스] 숫자의 표현

kim-hasa 2021. 8. 30. 19:33

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

 

코딩테스트 연습 - 숫자의 표현

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할

programmers.co.kr

연속되는 수로 나누는 문제입니다.

 

첫 숫자를 n이라고 하면 그 다음은 n, n+1, 그 다음은 n, n+1, n+2 ..... 이런식으로 증가합니다. 즉, 나눠야 하는 수가 m이라면, n + n + 1 = m 이 성립해야 하고 n + n + 1 + n + 2 = m  이 성립해야 합니다. 이러다가 n이 1보다 작아지면, 멈춥니다.

 

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    int div = 1;    // 나누는 수
    int sum = 0;    // 빼야하는 수
    int nSum;       // n - sum
    
    while(true)
    {
        int nSum = n - sum;
        
        if(nSum % div == 0 && nSum != 0)    // 0이 아니고, 나누어 진다면 증가
        {
            answer++;
        }
        else if( nSum / div < 0)    // 나누어지지 않는 선까지 온다면 멈춤
        {
            break;
        }
        
        sum += div;     // 나누는 수를 sum에 더함
        div++;          // 나누는 수 증가
    }
    return answer;
}