문제
1번부터 N번까지 번호를 가진 기사들이 존재하고 각 번호의 약수의 개수만큼의 파워를 가진 무기를 소유가능하다. 하지만 limit보다 약수의 개수가 크다면 해당 기사는 power 크기의 무게만 가질 수 있을 때, 각 기사들의 무기 파워의 합은?
로직
1. 각 번호들의 약수의 개수를 구한다.
(약수의 개수를 구하는 가장 효율적인 알고리즘은 해당 수의 제곱근까지만 체크하는 방법이다.)
2. limit보다 크면 power, 작으면 count를 answer에 더한다.
코드
import java.util.*;
class Solution {
public int solution(int number, int limit, int power) {
int answer = 1;
for(int i=2; i<=number; i++){
int count = 0;
for(int j=1; j<=Math.sqrt(i); j++){
if(i%j == 0){
if(j*j == i){
count += 1;
}
else{
count += 2;
}
}
if(count > limit){
answer += power;
break;
}
}
if(count <= limit){
answer += count;
}
}
return answer;
}
}
'Algorithm > Practice' 카테고리의 다른 글
Programmers - 숫자 짝궁 with JAVA (0) | 2023.06.13 |
---|---|
Programmers - 게임 맵 최단 거리 with JAVA (V) (0) | 2023.06.12 |
Programmers - 야근 지수 with JAVA (0) | 2023.06.10 |
Programmers - k진수에서 소수 개수 구하기 with JAVA (0) | 2023.06.10 |
Programmers - 소수 만들기 with JAVA (0) | 2023.06.07 |