-
[프로그래머스][Kotlin]기사단원의 무기프로그래머스 2022. 11. 21. 15:14728x90
import kotlin.math.* class Solution { fun solution(number: Int, limit: Int, power: Int): Int { var answer: Int = 0 var attackList = mutableListOf<Int>() for(i in 1 .. number){ var count = 0 var end = sqrt(i.toDouble()).toInt() for(j in 1 .. end){ if(j * j == i){ count++ } else if(i % j == 0){ count += 2 } } if(count > limit){ attackList.add(power) } else { attackList.add(count) } } answer = attackList.sum() return answer } }
상기 문제의 경우 처음에는 i%j == 0 이면 count를 올리는 것으로 작성하였다가, 시간 초과가 나오고 나서 제곱근을 이용하여 count의 갯수를 증가시키는 코드로 작성하여 통과하였다. 약수의 갯수를 구하는 것은 작성 할 때 마다 조금씩 헷갈려 해당 방법을 작성한 블로그의 주소도 같이 첨부합니다. 해당 문제는 현재 저의 실력으로 작성하였으며, 최적의 코드가 아님을 말씀드립니다.
약수의 갯수 제곱근을 이용하여 구하는 방법 설명 블로그 : https://doodle-ns.tistory.com/32