코드 풀이

정수 제곱근 판별

SammyK 2022. 3. 14. 14:04

풀이

function solution(n) {
    let num = Math.sqrt(n);
    if(num % 1 === 0 ) return (num+1) * (num+1)
    else return -1
}

먼저 받은 정수를 sqrt 해준다, 

만약 받은 정수가 제곱이 되는 수라면 1 나누었을때 나머지값은 항상 0 이기때문에 

나머지값이 0 이면 받은 (정수값+1)를 제곱한 수를 리턴해준다.

만약 나머지값이 0이 안된다면 -1 값을 리턴한다.

 

다른사람 풀이:

function nextSqaure(n){
  var result = 0;
  var x = 0;
  while (x*x < n){
    x++;
  }
  if (x*x == n){
    x++;
    result = x*x; 
  }else{
    result = 'no';
  }

  return result;
}

이분은 받은 정수값이 제곱수가 맞을때까지 x++ 반복해주는 while 문을 쓰셧다. 하지만 받은 정수값이 크다면

정보처리가 늦어지는 단점이 있다.

 

다른사람 풀이 2:

function nextSqaure(n){
    var result = 0;
    var n = Math.sqrt(n);
    result = Number.isInteger(n) ? Math.pow(n+1, 2) : 'no';
    return result;
}

이분은 먼저 받은 정수가 정수인지 체크해주는 isInteger() 를 쓰어, 맞다면 (n+1) 의 2제곱의 값을 주고 아니면

-1 값을 리턴한다. 깔끔하다.

'코드 풀이' 카테고리의 다른 글

하샤드 수  (0) 2022.03.14
콜라츠 추측  (0) 2022.03.14
제일 작은 수 제거하기  (0) 2022.03.14
정수 내림차순으로 배치하기  (0) 2022.03.12
자릿수 더하기  (0) 2022.03.12