찰리의 이야기

Javascript 정수 제곱근 판별 본문

찰리: 코딩 연습

Javascript 정수 제곱근 판별

쨜리 2021. 9. 12. 21:18
반응형

Javascript 정수 제곱근 판별

 

 

문제 : 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 사항

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

 

입출력 예

n / return

121 144
3 -1

 

어진 코드 

function solution(n) {
    var answer = 0;
    return answer;
}

 


일단 제곱근을 구하는 메서드를 이용해서 

제곱근이 될 때와 아닐 때를 분기화하면 될 것 같았습니다.

찾아보니 숫자에 루트를 씌워주는 Math.sqrt()를 이용하면 될 것 같습니다.

그리고 % 1을 했을 때 나머지가 0이 나오는지,

소수점이 남는지를 판단하여 

양의 정수의 제곱근 인지 아닌지를 판단할 수 있을 것 같습니다.

 

function solution(n) {
    if(Math.sqrt(n) % 1 !== 0){
        return -1;
    }else{
        return (Math.sqrt(n) + 1)*(Math.sqrt(n) + 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;
}

별도의 내장 메서드를 활용하지 않았습니다.

정수를 증가시켜서 특정 정수와 주어진 n이 같아질 때,

제곱근으로 판단하는 방식입니다.

이런 접근법도 있다는 관점에서 살펴보면 좋을 것 같습니다.

n값이 커질수록 연산 속도가 느려질 것 같다는 생각이네요.

 

 

 

 

 

Javascript 정수 제곱근 판별

 

반응형
Comments