상세 컨텐츠

본문 제목

알고리즘 문제풀이 - computeSquareRoot

Programming Language/JavaScript

by Yongari 2022. 12. 28. 22:12

본문

 

문제 설명

수를 입력 받아서 제곱근 값을 소수 둘째자리까지 리턴해야함, 단 Math.sqrt 사용은 할 수 없음

 

입력

인자 1 : num

  • number 타입의 정수 (num >= 2)

출력

  • number 타입을 리턴해야 합니다.
  • 최대 소수점 둘째 짜리까지 구합니다. (소수점 셋째 자리에서 반올림)

주의 사항

  • Math.sqrt 사용은 금지됩니다.

입출력 예시

let output = computeSquareRoot(9);
console.log(output); // --> 3

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

힌트

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

 

코드 설명

function computeSquareRoot(num) {
  // 초기값 1로 설정 
  let xn =1;

  //xn의 제곱이 입력받은 수와 같지 않을때 반복
  while(xn ** 2 !== num){
    if( Number((xn*xn).toFixed(2))===num){
      break;
    }
    xn = (xn + (num/xn)) / 2
  }
  return Number(xn.toFixed(2));
}

관련글 더보기