728x90
문제
정답
import java.util.*;
class Solution {
public int solution(int number, int limit, int power) {
int answer = 0;
int[] num = new int[number];
for(int i = 0; i < number; i++) {
for(int j = 1; j <= (int) Math.sqrt(i + 1); j++) {
if((i + 1) % j == 0) {
num[i]++;
if((i + 1) / j != j) num[i]++;
}
}
}
for(int n : num) {
if(n > limit) answer += power;
else answer += n;
}
return answer;
}
}
처음에는 모든 숫자를 돌면서 약수를 구했었습니다. 하지만 number가 최대 100,000개 들어가는 경우에 시가 초과가 떴습니다. 그래서 약수를 구하는 부분에서 루트를 이용하여 숫자 짝이 맞는 것을 이용하여 문제를 풀었습니다.
728x90
'프로그래머스 코딩테스트 > JAVA' 카테고리의 다른 글
[프로그래머스] 옹알이 (2) JAVA (0) | 2024.08.21 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 JAVA (0) | 2024.08.20 |
[프로그래머스] 덧칠하기 JAVA (0) | 2024.08.08 |
[프로그래머스] 소수 만들기 JAVA (0) | 2024.08.08 |
[프로그래머스] 모의고사 JAVA (0) | 2024.08.08 |