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
}

 

정주님꺼 따라함 ㅎㅎ감사합니다.