룬아님의 취중코딩

Codility 27번 CountFactors 본문

개발/알고리즘

Codility 27번 CountFactors

룬아님 2019. 9. 23. 20:52

CountFactors

 

A positive integer D is a factor of a positive integer N if there exists an integer M such that N = D * M.

For example, 6 is a factor of 24, because M = 4 satisfies the above condition (24 = 6 * 4).

Write a function:

class Solution { public int solution(int N); }

that, given a positive integer N, returns the number of its factors.

For example, given N = 24, the function should return 8, because 24 has 8 factors, namely 1, 2, 3, 4, 6, 8, 12, 24. There are no other factors of 24.

Write an efficient algorithm for the following assumptions:

  • N is an integer within the range [1..2,147,483,647].

 

class Solution {
    public int solution(int N) {
        // write your code in Java SE 8
        int cnt = 0;
        long i = 1;
        while(i * i < N){
            if(N % i == 0){
                cnt++;
            }
            i++;
        }
        cnt = cnt*2;
        if(i * i == N){
            cnt++;
        }
        
        return cnt;
    }
}

 

import java.util.*;

class Solution {
    public int solution(int N) {
        int cnt = 0;
        //if(N%2 == 0){
            int sq = (int)Math.sqrt(N);
            for(int i=1; i<=sq; i++){
                if(N%i == 0){
                    //System.out.println(i);
                    cnt++;
                }
            }
            
            cnt*=2;
            if(sq * sq == N){
                cnt--;
            }
        
        return cnt;
    }
}

https://app.codility.com/demo/results/trainingBG692E-4KC/

반응형

'개발 > 알고리즘' 카테고리의 다른 글

Codility 28번 MinPerimeterRectangle  (0) 2019.09.30
Codility 26번 MaxDoubleSliceSum  (0) 2019.09.25
Codility 25번 MaxSliceSum  (0) 2019.09.22
Codility 23번 EquiLeader  (0) 2019.09.17
Codility 24번 MaxProfit  (0) 2019.09.15
Comments