문제 설명
해결과정
Solution.java
import java.util.*;
class Solution {
public int solution(int number, int limit, int power) {
// 철의 예상 무게
int answer = 1;
// 기사의 번호 (1번 기사는 약수가 1개 attack은 1 무기의 무게도 1)
int knight = 2;
// 무기의 공격력 = 약수의 개수
int attack = 0;
// 2번 부터 number의 기사까지 체크
while(knight <= number) {
if(knight <= 3) {
attack = 2;
} else {
attack = measure(knight);
}
// System.out.println(attack);
attack = attack > limit ? power : attack;
// System.out.println(knight + "기사의 공격력 " + attack + " ");
// if(attack > limit) {
// attack = power;
// }
answer += attack;
knight++;
}
return answer;
}
public int measure(int knight) {
Set<Integer> set = new HashSet<>();
// System.out.println(knight + "의 약수");
for(int i = 1; i < ((knight/2)+1); i++) {
if(knight % i == 0) {
set.add(i);
set.add(knight/i);
// System.out.println(i + " " + knight/i);
}
}
// System.out.println(set.size() + "개");
return set.size();
}
}
Java
복사