기사단원의 무기
Lv. 1
Solution
export function knightlyWeapon(number: number, limit: number, power: number) {
const isSquared = (num: number) => Math.sqrt(num) % 1 === 0;
const countDivisor = (num: number) => {
let count = 0;
for (let i = 1; i < Math.sqrt(num); i++) {
if (num % i === 0) {
count += 2;
}
}
return isSquared(num) ? count + 1 : count;
};
const getPower = (num: number) => {
const divisorCount = countDivisor(num);
return divisorCount <= limit ? divisorCount : power;
};
return new Array(number).fill(undefined).reduce((prev, _, i) => prev + getPower(i + 1), 0);
}