Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 숫자의 제곱근 구하기: 정확한 값 또는 범위를 반환하는 함수

이 글에서는 정수 하나를 입력받아 그 수의 제곱근이 정확히 떨어지는 경우에는 해당 정수를, 그렇지 않은 경우에는 제곱근이 위치한 두 정수 사이의 범위를 배열로 반환하는 자바스크립트 함수를 구현하는 방법을 알아보겠습니다.

문제 정의

정수 n을 매개변수로 받아 다음 중 하나를 반환하는 함수를 작성해야 합니다.

  • n이 완전제곱수인 경우: k * k == n을 만족하는 정수 k를 반환
  • n이 완전제곱수가 아닌 경우: k * k < n < (k+1) * (k+1)을 만족하는 연속된 두 정수의 범위 [k, k+1]을 반환

즉, 입력값의 제곱근이 딱 떨어지면 그 값을 그대로 돌려주고, 소수점 이하가 남으면 제곱근이 어느 두 정수 사이에 있는지 알려주는 방식입니다.

구현 코드

const num = 83;

const squareRootRange = (num = 1) => {
  const exact = Math.sqrt(num);
  if (exact === Math.floor(exact)) {
    return exact;
  } else {
    return [Math.floor(exact), Math.ceil(exact)];
  }
};

console.log(squareRootRange(num));

코드 동작 원리

함수의 핵심 로직은 다음과 같습니다.

  1. Math.sqrt()로 입력값의 실제 제곱근을 계산합니다. 예를 들어 Math.sqrt(83)은 약 9.1104...입니다.
  2. Math.floor()와 비교하여 제곱근이 정수인지 확인합니다. 값이 자기 자신의 내림 값과 같다면 완전제곱수라는 의미입니다.
  3. 완전제곱수라면 그 정수를 그대로 반환합니다. 예를 들어 64를 넣으면 8이 반환됩니다.
  4. 그렇지 않다면 Math.floor()Math.ceil()을 활용해 제곱근이 끼어 있는 바로 아래 정수와 바로 위 정수를 배열 형태로 반환합니다.

실행 결과

83의 제곱근은 약 9.11이므로, 9² = 81 < 83 < 10² = 100이 성립합니다. 따라서 콘솔에는 다음과 같은 결과가 출력됩니다.

[9, 10]

이처럼 간단한 조건 분기만으로 제곱근의 존재 여부를 판별하고, 없다면 인접한 두 정수 사이의 범위를 손쉽게 구할 수 있습니다. 유효성 검사나 근사값 계산 등 다양한 상황에서 유용하게 응용할 수 있습니다.