Kotlin/코딩테스트

[프로그래머스] 기사단원의 무기 - kotlin

깨노비 2023. 4. 11. 00:53
728x90
반응형

숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다.

각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다.

 

import kotlin.math.sqrt

class Solution {
    fun solution(number: Int, limit: Int, power: Int): Int {
        var answer: Int = 0

        for (i in 1..number) {
            answer += powerGauge(i, limit, power)
        }

        return answer
    }
    
    fun powerGauge(number: Int, limit: Int, power: Int): Int {
        var cnt = 0
        for (i in 1..sqrt(number.toDouble()).toInt()) {
            if (number % i == 0) {
                cnt += (if (i * i == number) 1 else 2)
            }
        }

        return if (cnt > limit) power else cnt
    }
}
728x90
반응형