본문 바로가기
개발

프로그래머스: 기사단원의 무기

by kks950115 2023. 11. 22.
728x90
import kotlin.math.sqrt
class Solution {
    fun findDivisor (n:Int): Int{
        var answer:Int = 0
        var array=intArrayOf()
        var sqrtNum = sqrt(n.toDouble()).toInt()
        for (i in 1 ..  sqrtNum  ){
            if(n%i==0){
                array+=i
                if(n/i != i) array+=n/i
            }
        }
        answer=array.size
        return answer
    }
    fun solution(number: Int, limit: Int, power: Int): Int {
        var array= intArrayOf()
        for(n in 1 .. number){
            if(findDivisor(n) <= limit){
                array+=findDivisor(n)
            }else{
                array+=power
            }
        }
        return array.sum()
    }
}

 

처음에는 1..n까지 다 돌려보는 무식한 방법으로 했었는데 시간초과가 떴다.

2분의 1로 줄여도 시간초과가 떴다.

제곱근을 활용한 방법이 있다하여 구글링하여 적용해보니 통과했다. 다른 사람들도 제곱근을 이용한 방법을 주로 썼더라.

 

배열을 println()으로 띄우면 객체주소가 나온다. 내용을 볼려면 배열 뒤에 .contentToString()을 붙여주어야한다.

728x90
반응형

댓글