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

well-life-gm·2021년 12월 22일
0

프로그래머스

목록 보기
106/125
post-thumbnail

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

1~n까지 합은 n(n+1)/2라는 것을 이용해서 [b까지의 합] - [a까지의 합] = a+1 + a+2 + ... + b가 되고, 이 숫자가 n이 되면 된다.

위 식을 정리하면 임의의 p,q에 대해서 p*q = 2*n이 되는 p, q쌍의 갯수가 정답이며, p와 q는 각각 (b-a), (b+a+1)이 된다.
한 가지 주의할 점은 b가 정수일 때만 정답에 해당되기 때문에 p + q가 짝수라면 정답에 포함되지 않도록 해야한다.

코드는 다음과 같다.

using namespace std;

int solution(int n) {
    int answer = 1;
    int n2 = n << 1;
    for(int i=2;i<n;i++) {
        if(!(n2 % i)) {
            int p = i;
            int q = n2 / i;
            if((p + q) % 2 == 0 || p == 1)
                continue;
            if(p > q)
                break;
            answer++;
        }
    }
    return answer;
}

결과

profile
내가 보려고 만든 블로그

0개의 댓글