기사단원의 무기

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);
}