기록공간

CountDiv (Codility) 본문

Algorithm/문제

CountDiv (Codility)

입코딩 2020. 7. 18. 14:12
반응형

문제

A와 B 사이에 있는 수들 중 K와 나눠지는 개수를 출력하는 문제이다.

 

해결 방법

갯수만 출력하면 되기 때문에 A부터 B까지 반복하며 K와 나눠지는지 검사할 필요가 없다.

 

A가 0일 경우 B까지의 K로 나눠지는 숫자의 개수는 (B / K) + 1이다. 1이 더해지는 이유는 0일 때에도 K와 나눠지기 때문이다. 

 

A가 0이 아닐 경우에는 0부터 B까지의 개수인 (B / K) + 1에서 A까지 K와 나눠지는 개수를 빼주면 된다. 만약 A가 K와 정확히 나눠진다면 (B / K) + 1 - (A / K) 를 해주면 된다. 만약 그렇지 않은 경우 (B / K) + 1 - ((A / K) + 1)을 해주면 된다. 둘의 차이는 A를 K로 나눠지는 것을 포함하느냐 안 하느냐의 차이이다.

 

코드는 다음과 같다.

int solution(int A, int B, int K)
{
	if (A == 0) return (B / K) + 1;
	else return (B / K) + 1 - (A % K ? (A / K) + 1 : (A / K));
}

 

반응형

'Algorithm > 문제' 카테고리의 다른 글

MinAvgTwoSlice (Codility)  (0) 2020.07.19
GenomicRangeQuery (Codility)  (2) 2020.07.18
PermCheck (Codility)  (0) 2020.07.17
MissingInteger (Codility)  (0) 2020.07.13
BinaryGap (Codility)  (0) 2020.07.13
Comments