문제가 뭔가 마음에 들어서 그냥 적어둔다. 쉬웠지만 그냥 뭔가 재미있어서 갑자기 올린다.
수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴해야 합니다.
인자 1 : num
number 타입의 정수 (num >= 2)
number 타입을 리턴해야 합니다.
최대 소수점 둘째 짜리까지 구합니다. (소수점 셋째 자리에서 반올림)
Math.sqrt 사용은 금지됩니다.
let output = computeSquareRoot(9);
console.log(output); // --> 3
output = computeSquareRoot(6);
console.log(output); // --> 2.45
function computeSquareRoot(num) {
let r = 0;
while( r*r < num) { //r의 제곱이 num이 될때
r += 0.001; //근사값을 찾기 위해 0.001을 더했음
}
return Number(r.toFixed(2)); //number타입으로 바꾸고 소수점 2번째까지 자름
}
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 = base + diffs[i];
}
if (base * base === num) {
return base;
} else {
base = base - diffs[i];
}
}
return Number(base.toFixed(2));
}
뭐가 많길래 순간 당황했지만 비슷하게 푼거같다. 근데 diff배열에 0.01, 0.001은 그렇다치고
1, 0.1은 왜 넣은건지 모르겠다. 저걸 넣을 케이스가 나오는건가?