본문 바로가기
2023년 이전/Codility

Lesson 10 - CountFacotrs

by JeongUPark 2020. 1. 6.
반응형

자세한 문제는 여기서 확인하시면 됩니다.

 

간잔하게 주어진 N의 약수들을 계산하는 문제입니다.

 

첫번째 code는 

fun solution(N: Int): Int {
    var count = 0

    for(i in 1..N/2){
        if(N%i == 0){
            count++
        }
    }
    return count+1
}

이렇게 했습니다. 하지만 엄청 큰 N수에 대해서 퍼포먼스가 나오지 않았습니다.

 

그래서 숫자들을 나열하고 생각해보니

1 2 4 8 16 / 1 2 3 4 6 9 12 18 36 를 보면 제곱근의 약수의 2배 -1 만큼 값이 존재하는 것을 확인 할 수 있고

1 2 3 4 6 8 12 24 의 경우에는 제곱근의 약수의 2배 만큼 존재하는 것을 확인 할 수 있습니다. 

그래서 그 code는

fun solution(N: Int): Int {
        var count = 0

    var k = Math.sqrt(N.toDouble())
    for(i in 1..k.toInt()){
        if(N%i == 0){
            count++
        }
    }
    count *=2
    var k_int = k.toInt()
    if(k - k_int == 0.0){
            count --
    }
    return count
}

아래

if(k - k_int == 0.0){
    count --
}

 

이 부분이 제곱근

 

반응형

'2023년 이전 > Codility' 카테고리의 다른 글

Lesson 7 - Nesting  (0) 2020.01.07
Lesson10 - Peaks  (0) 2020.01.06
Lesson 9 - MaxProfit  (0) 2020.01.06
Lesson8 - Dominator  (0) 2020.01.06
Lesson7 - Brackets  (0) 2019.12.19