[프로그래머스] 정수 제곱근 판별

니나노개발생활·2021년 9월 20일
0
post-thumbnail

문제

정수 제곱근 판별

설명

임의의 양의 정수 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 포스팅

Math.sqrt()

  • 숫자의 제곱근을 반환
  • x 또는 반환 값이 음수이면 NaN을 반환
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()

MDN

  • base 에 exponent를 제곱한 값을 반환
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()

  • 주어진 값이 정수인지 판별
Number.isInteger(value)

Number.isInteger(1);         // true
Number.isInteger(-100000);   // true

Number.isInteger(0.1);       // false
profile
깃헙으로 이사중..

0개의 댓글