반응형
자세한 문제는 여기서 확인하시면 됩니다.
간잔하게 주어진 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 |