본문 바로가기
카테고리 없음

[Codewars][JavaScript] 7ky. Find the next perfect square!

by g2hans 2020. 12. 20.

1. 문제

 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

입력받은 숫자는 한 사각형의 넓이이다. 이때 정사각형이라면 한변이 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);
}

댓글