알고리즘 풀이/Codility

codility - CountDiv (Prefix Sums)

배게 2019. 12. 13. 03:00
728x90

1. K로 나눠지는 가장 첫번째 인자 x(A<=x<=B) 찾기


2. '(B-x)/k' == 'x<n<=B인 n값 중 K로 나눠지는 값의 개수' 


에서 1을 더해주면 


'x<=n<=B인 n값 중 K로 나눠지는 값의 개수'




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public int solution(int A, int B, int K) {
        // write your code in Java SE 8
        // 첫번째 인자 찾는것
        // B-A를 K로 나눈 몫을 더하는 것
        
        int first = (A/K)*K;
        int unit = 0;
        int temp = 0;
        
        while(temp<=B){
            temp = first + K*unit;
            if( A<=temp && temp<=B ) {
                first = temp;
                break;
            }
            else unit++;
        }
        if(temp>B) return 0;
        
        return (B-first)/K+1;
        
    }
cs