CountDiv
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문과 연산을 넣은 알고리즘이다.