
내가 작성한 코드
class Solution {
public int solution(int number, int limit, int power) {
int answer = 0;
for (int i = 1; i <= number; i++) {
int count = 0;
int sqrt = (int) Math.sqrt(i);
// 약수의 개수를 구하는 방법 >> 제곱근 이하의 수로 나누어 약수 찾기기
for (int j = 1; j <= sqrt; j++) {
if (i % j == 0) {
count += 2; // j와 i/j 두 개의 약수
if (j * j == i)
count--; // 제곱수일 때 중복 제거
}
}
if (count > limit) {
count = power;
}
answer += count;
}
return answer;
}
}
다른 사람의 코드
class Solution {
public int solution(int number, int limit, int power) {
int[] count = new int[number + 1];
// 각 숫자의 약수 갯수 구하기
for (int i = 1; i <= number; i++) {
for (int j = 1; j <= number / i; j++) {
count[i * j]++;
}
}
int answer = 0;
for (int i = 1; i <= number; i++) {
if (count[i] > limit) {
answer += power;
} else {
answer += count[i];
}
}
return answer;
}
}
Share article