https://school.programmers.co.kr/learn/courses/30/lessons/136798
단순하게 약수의 갯수를 구한 후 limit 이내면 값을 더하고, limit 벗어나는 경우에는 power 값을 구하도록 로직을 구현했다.
약수의 갯수는 시간복잡도를 최소화 하기 위해 숫자의 제곱근으로 접근하고, 약수를 나눴을 때 나오는 값이 약수라는 특징을 사용해 약수의 갯수를 구했다.
class Solution {
public int solution(int number, int limit, int power) {
int answer = 0;
for(int i=1;i<=number;i++){
int cnt = 0;
for(int k=1;k<=Math.sqrt(i);k++){
if(i % k == 0){
cnt++;
if(i / k != k) cnt++;
}
}
if(cnt <= limit) answer+=cnt;
else answer+=power;
}
return answer;
}
}