2020.코딩일지

[JS][코플릿]Algorithm Basic-17_computeSquareRoot 본문

algorithm

[JS][코플릿]Algorithm Basic-17_computeSquareRoot

개발하는라푼젤 2022. 8. 14. 21:11
728x90

수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴해야 합니다.

  • 최대 소수점 둘째 짜리까지 구합니다. (소수점 셋째 자리에서 반올림)
  • Math.sqrt 사용은 금지됩니다.

힌트

  • 소수점 처리는 javascript 표준 내장 객체인 Number를 검색해 봅니다. (js decimal places limit 또는 자바스크립트 소수점 자리수)
  • 항상 타입을 주의하여야 합니다.
  • 각 자리수(1, 0.1, 0.01, 0.001)마다 (목표값을 넘지 않는) 근사값을 구하는 방식이 있습니다.
  • 제곱근을 구하는 방법 중 바빌로니아 법이 있습니다. 바빌로니아 법의 점화식(recurrence formula)을 이해할 수 있다면, 해당 식을 이용해 문제를 풀어도 좋습니다.

 

입출력예시

더보기
//입출력예시
let output = computeSquareRoot(9);
console.log(output); // --> 3

output = computeSquareRoot(6);
console.log(output); // --> 2.45

 

 

 

👻

 

 

function computeSquareRoot(num) {
  const diffs = [1, 0.1, 0.01, 0.001];
  let base = 1;
  for (let i = 0; i < diffs.length; i++) {
    while (base * base < num) {
      base+= diffs[i];
    }

    if (base * base === num) {
      return base;
    } else {
      base -= diffs[i];
    }
  }
  return Number(base.toFixed(2));
}

 

 

toFixed()

자바스크립트에서 소수점을 처리하는 두 가지 방법 toPrecision()과 toFixed()

numObj = 0.0005678 
console.log(numObj.toFixed()); // 결과: '0'
console.log(numObj.toFixed(5)); // 결과: '0.00057'
console.log(numObj.toFixed(3)); // 결과: '0.001'
console.log(numObj.toFixed(1)); // 결과: '0.0'
Comments