프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제

제출한 코드
import java.util.Arrays;
class Solution {
public int solution(int number, int limit, int power) {
int[] counts = new int[number];
for (int i = 1; i <= number; i++) {
int count = countDivisor(i);
if (count > limit) counts[i-1] = power;
else counts[i-1] = count;
}
return Arrays.stream(counts).sum();
}
private int countDivisor(int num) {
double sqrt = Math.sqrt(num);
int count = 1;
for (int i = 2; i <= sqrt; i++) {
if (num % i == 0) count++;
}
return sqrt == Math.floor(sqrt) ? count * 2 - 1 : count * 2;
}
}
풀이
약수의 개수를 구하는 알고리즘은 아래의 글에 간단히 적어두었다.
약수의 개수 알고리즘
public int countDivisor(int num) { double sqrt = Math.sqrt(num); int count = 1; for (int i = 2; i 1부터 n까지의 숫자를 i로 나누어 떨어지는 수를 count 에 더하면 시간 복잡도가 O(n)이 나오게 된다.하지만, 약수의 개수
sxxlx.tistory.com
배열에 약수의 개수를 넣어서 마지막에 합을 구하여 return 하도록 작성했다.
약수의 개수를 구했을 때, 만약 limit 보다 더 많으면, 지정된 power를 counts 배열에 넣도록 했다.
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] 133499번 - 옹알이 (2) [Java] (0) | 2026.06.05 |
|---|---|
| [프로그래머스] 77484번 - 로또의 최고 순위와 최저 순위 [Java] (0) | 2026.06.04 |
| [프로그래머스] 159994번 - 카드 뭉치 [Java] (0) | 2026.05.22 |
| [프로그래머스] 12901번 - 2016년 [Java] (0) | 2026.05.21 |
| [프로그래머스] 138477번 - 명예의 전당 (1) [Java] (0) | 2026.05.20 |