정수제곱근 판별하기 (Level 1)

문제

nextSqaure함수는 정수 n을 매개변수로 입력받습니다.

n이 임의의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 임의의 정수 x의 제곱이 아니라면 ‘no’을 리턴하는 함수를 완성하세요.

예를들어 n이 121이라면 이는 정수 11의 제곱이므로 (11+1)의 제곱인 144를 리턴하고, 3이라면 ‘no’을 리턴하면 됩니다.

풀이

function nextSqaure(n){
  if ( Number.isInteger(Math.sqrt(n)) ) {
    return Math.pow((Math.sqrt(n)+1), 2)
  } else {
      return "no"
  }
}

루트n이 정수인지 판별 후에 참이면 루트n에 1을 더해 제곱한 값을 리턴하고 거짓이라면 no를 출력

메서드를 많이써서 깔끔해보이지 않으니 찝찝하다

다른 사람의 풀이

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;
}

반복문, 조건문으로 풀이한 식 따봉이 8개인데 코드를 보며 이해하기는 쉽지만 복잡도는 O(N)이다.

내 코드가 더 낫다! 빼액!! (비하발언아님)

+ Recent posts