Apple /Algorithm
[Algorithm/Swift] Codility / CountDiv
moon_0
2022. 12. 23. 08:33

문제
https://app.codility.com/programmers/lessons/5-prefix_sums/count_div/
풀이

주어진 A부터 B까지 정수를 K로 딱 나눠 떨어지는 정수의 개수를 구하면됩니다.
A...B % K 라고 단순히 생각하면 답은 나오지만 성능은 안나올거에요.
일단 생각 없이 풀어보기 (성능 최악 ^^*)
A의 배수, B의 배수를 구해주면 됩니다.
Tip
올림(ceil) / 내림(floor) / 반올림(round)
Code O(B-A)
public func solution(_ A : Int, _ B : Int, _ K : Int) -> Int {
var result = 0
for i in A...B {
if i % K == 0 {
result += 1
}
}
return result
}

Code O(1)
public func solution(_ A : Int, _ B : Int, _ K : Int) -> Int {
let minCount: Int = Int(floor(Double(A-1) / Double(K)))
let maxCount: Int = Int(floor(Double(B) / Double(K)))
return maxCount - minCount
}
정주님꺼 따라함 ㅎㅎ감사합니다.