Count Div
문제 설명
세 정수 A, B, K가 주어질 때, A 이상 B 이하에서 K로 나누어떨어지는 숫자의 개수를 반환.
입력
A, B: 정수 (0 ≤ A ≤ B ≤ 2,000,000,000)K: 정수 (1 ≤ K ≤ 2,000,000,000)
출력
A이상B이하에서K의 배수 개수
예제
typescript
;(A = 6), (B = 11), (K = 2)2의 배수: [6, 8, 10] → 3개
코드 (O(1))
typescript
function solution(A: number, B: number, K: number): number {
const left = A % K === 0 ? Math.floor(A / K) : Math.floor(A / K) + 1
const right = Math.floor(B / K)
return right - left + 1
}풀이
B까지 K의 배수 개수:Math.floor(B / K)A이전까지 K의 배수 개수:A % K === 0이면A도 포함 →Math.floor(A / K)- 아니면
Math.floor(A / K) + 1로 보정
- 두 값의 차이 + 1
시간 복잡도 O(1), 공간 복잡도 O(1).
테스트
typescript
console.log(solution(6, 11, 2)) // 출력: 3
console.log(solution(1, 10, 1)) // 출력: 10
console.log(solution(10, 10, 5)) // 출력: 1
console.log(solution(10, 10, 7)) // 출력: 0
console.log(solution(0, 10, 3)) // 출력: 4
console.log(solution(0, 0, 1)) // 출력: 1
console.log(solution(1, 1_000_000_000, 1)) // 출력: 1_000_000_000