🍀 코딩 테스트/프로그래머스

LV 1 - 정수 제곱근 판별

놀러와요 버그의 숲 2022. 8. 12. 18:36
728x90
반응형

 

풀이

function solution(n) {
  if (Math.sqrt(n) === Math.floor(Math.sqrt(n))) {
    return (Math.sqrt(n) + 1) ** 2;
  } else {
    return -1;
  }
}

Math.sqrt()메서드를 이용하여 완전히 딱 정수로 떨어진다면 (Math.floor()메서드 적용한것과 비교) 하나 더한것에서 제곱한 값을 리턴해준다.

아닐 경우 -1을 리턴한다. 

 

 

다른 스터디원 풀이

function solution(n) {
  // 입력 : 양의 정수 n
  // 출력 : 제곱근이 양의 정수이면 제곱근 +1 의 제곱, 아니라면 -1 리턴
  // 제곱근 x : 제곱하면 n이 되는 수

  // 1. n의 제곱근 root를 구한다.
  // 2. root가 정수인지 판별하고, 정수일 경우 root + 1 을 거듭제곱하여 리턴한다.
  // 3. 판별 결과가 false 일 경우 -1을 리턴한다.
  let root = Math.sqrt(n);
  if (Number.isInteger(root)) return (root + 1) ** 2;
  else return -1;
}

console.log(solution(121));

isInteger() 메서드를 사용해서 정수인지 아닌지 판단하셨는데 나보다 더 정확하다고 느꼈다.