floor() 몫 구하기

CountDiv (50%)

class Solution {
    public int solution(int A, int B, int K) {
        int count=0;

        for(int i=A; i<=B; i++){
            if(i % K == 0){
                count++;
            }
        }
        return count;
    }
}

문제를 간단히 요약해보자면
A와 B 두 정수 사이에 K로 나누어 떨어지는 숫자의 갯수를 구하는 문제였다.

worst-case time이 O(1) 으로 되어있어서
처음에는 너무 어렵게 생각한것같다.

지금봐도 말도안되는 방식으로 알고리즘을 짰는데
시간 다 쓰더라도 좀더 신경써서 풀어봐야겠다.

class Solution {
    public int solution(int A, int B, int K) {
        // write your code in Java SE 8
        int result = B/K + 1;
        if(A != 0){
            result -= ((A-1)/K + 1);
        }
        return result;
    }
}

풀이과정은 정말 간단하게 풀수있었다.

문제를 다시한번 생각해보면 결국 0에서 B까지 K로 나누어 떨어지는 갯수에서
0부터 A까지의 갯수를 뺀다고 생각하면되지만,

0에서 B까지의 과정을 생각해볼때 0과 A가 포함되어있다.
그러므로 A!=0에서 result의 값에 포함되는 0과 A값을 빼주기 위해 if문과 연산을 넣은 알고리즘이다.