1. 문제
입력받은 숫자는 한 사각형의 넓이이다. 이때 정사각형이라면 한변이 1이 더 큰 사각형의 넓이를 구하고, 만약 아니라면 -1을 return 한다.
2. 문제풀이
(1) Math.sqrt로 주어진 사각형의 넓이의 제곱근을 구해서 한 변의 길이를 구한다.
(2) Math.pow로 (1)에서 구한 값을 제곱했을 때 원래 주어진 수와 같다면 (1)에서 구한 수의 1을 더해서 그 수의 제곱을 곱하고
(3) 같지않다면 -1을 반환한다.
function findNextSquare1(sq) {
return Math.pow(Math.trunc(Math.sqrt(sq)), 2) === sq ? Math.pow(Math.sqrt(sq) + 1, 2) : -1;
}
이때, 제곱수가 아니라면 제곱근의 값의 정수 부분만을 가지고 곱해야하니깐 📎Math.trunc을 사용해서 정수부분만 추출하였다.
다른 사람의 정답에서 깔끔한 답변이 있기에 가져와봤다.
Math.sqrt를 하고 1로 나눴을 때 나머지가 있다면 주어진 수는 제곱수가 아니라고 판별하는 방법이다. 👇
function findNextSquare2(sq) {
return Math.sqrt(sq) % 1 ? -1 : Math.pow(Math.sqrt(sq) + 1, 2);
}
댓글