임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
n은 1이상, 50000000000000 이하인 양의 정수입니다.
제곱근과 관련된 문제이니 Math.sqrt를 사용하면 될 것 같은데 n이 정수인지 아닌지 여부를 확인해야하는 부분과 x+1의 제곱을 다시 리턴해야겠다 생각했다.
그리 어려운 문제는 아닌 것 같지만 정수 판별과 제곱을 하는 부분에서 구글링하여 새로운 사실을 알 수 있었다.
function solution(n) {
let sqrt = Math.sqrt(n)
return Number.isInteger(sqrt) ? Math.pow(sqrt+1,2) : -1
}
Math.sqrt(x)
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN
Math.pow(base, exponent)
Math.pow(7, 2); // 49
☝🏻 Math.pow()를 이용하여 제곱근 구하는 것도 가능
Math.pow(4, 0.5); // 2 (4의 제곱근) Math.pow(8, 1/3); // 2 (8의 세제곱근)
Number.isInteger(value)
Number.isInteger(1); // true
Number.isInteger(-100000); // true
Number.isInteger(0.1); // false