레벨 0

문제

문제.png

풀이

자연수 n이 주어졌을 떄 n의 순서쌍을 구하는 문제였다

n의 약수의 갯수가 곧 순서쌍의 갯수라고 생각하여 약수를 구하도록 구현하였다

function solution(n) {
  const array = [];
  for (let i = 1; i <= n; i++) {
    if (n % i === 0) {
      array.push(i);
    }
  }
  return array.length;
}

아니나다를까 성공하여도 효율성이 너무떨어진다. 가장 많은 추천을 받은 풀이를 보았더니 제곱근을 활용하였다

function solution(n) {
  let ans = 0;
  for (let i = 1; i < Math.sqrt(n); i++) {
    if (n % i === 0) {
      ans += 2;
    }
  }

  return Number.isInteger(Math.sqrt(n)) ? ans + 1 : ans;
}

반복 수가 반으로 줄어들어 훨씬 효율적인 코드였다. 나중에 유사한 문제에서 활용해 볼 수 있도록 메모!