[프로그래머스] 기사단원의 무기 (JS)

hhkim·2023년 7월 8일
0

Algorithm - JavaScript

목록 보기
59/188
post-thumbnail

풀이 과정

  1. 약수 개수 구하는 함수 구현
    1부터 자신의 제곱근까지 반복하면서 나누어 떨어지는 수와 몫의 수
    이때 제곱근과 동일한 수라면 자기자신만 세기
  2. 기사의 수만큼 반복하면서 조건에 따라 공격력(철의 무게) 쌓아가기: for

코드

function solution(number, limit, power) {
  let result = 0;
  for (let i = 1; i <= number; ++i) {
    const tmp = countDevisor(i);
    result += tmp > limit ? power : tmp;
  }
  return result;
}

function countDevisor(n) {
  let result = 0;
  const sqrt = Math.sqrt(n);
  for (let i = 1; i <= sqrt; ++i) {
    if (n % i === 0) {
      result += i === sqrt ? 1 : 2;
    }
  }
  return result;
}

🦾

다른 사람 풀이를 보고 Math.sqrt()를 호출할 필요 없이 i * in보다 작은지를 확인해도 된다는 걸 알았다. 당연한 건데 왜이리 단순하게만 생각하게 되는지..

0개의 댓글