약수의 개수와 덧셈

jericho·2023년 12월 14일

PS(문제풀이)

목록 보기
8/12

https://school.programmers.co.kr/learn/courses/30/lessons/77884

범위에서 약수가 짝수개인 수는 더하고 홀수개인 수는 빼기.

fun solution(left: Int, right: Int): Int =
    (left..right).sumOf {
        val rt = kotlin.math.sqrt(it.toDouble()).toInt()
        if (rt * rt == it) -it else it }

처음 문제를 보면 약수를 모두 구해서 홀짝을 판별해야 한다고 생각할 수 있다.
하지만 대수적으로 생각해보면 약수를 구하지 않고도 문제를 해결할 수 있다.
약수는 쌍으로 나오므로, 홀수개가 되려면 제곱수여야만 가능하다.

0개의 댓글