주어진 값 N의 약수의 갯수를 구하는 문제이다.

이전과 마찬가지로 시간 복잡도가 O(sqrt(N))이고, 동일한 방법으로 접근했다.

다만 유의해야할 것은 무조건 +=2 를 할 것이 아니라, sqrt(N)이 정수인 경우도 생각해야 하기 때문에 이 부분에 대한 처리만 더 해주면 된다.



#include <math.h>

int solution(int N)
{
    int nRet = 0;
    
    int nStart = sqrt(N);
    while( nStart > 0 )
    {
        if( N % nStart == 0 )
        {
            if( N / nStart != nStart )
                nRet += 2;
            else
                ++nRet;
        }
        
        --nStart;
    }
    
    return nRet;
}



정확도 100%, 성능 100%

저작자 표시 비영리 변경 금지
신고

'Programming > C,C++' 카테고리의 다른 글

[Codility] ChocolatesByNumbers  (0) 2017.12.06
[Codility] ChocolatesByNumbers  (0) 2017.12.06
[Codility] CountFactors  (0) 2017.12.06
[Codility] MinPerimeterRectangle  (0) 2017.12.06
[Codility] MaxProfit  (0) 2017.12.06
[Codility] Dominator  (0) 2017.12.05

+ Recent posts