[프로그래머스 JS] 제곱수 판별하기 Math.sqrt(), Number.isInteger(), 나머지 연산자(%)

반응형

제곱수 판별하기

🎈 문제설명

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해 주세요.

🎈 제한사항

  • 1 ≤ n ≤ 1,000,000

🎈 입출력 예

n result
144 1
976 2

🎈 입출력 예 설명

입출력 예 #1

  • 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.

입출력 예 #2

  • 976은 제곱수가 아닙니다. 따라서 2를 return합니다.

 

💻 나의 풀이

제곱수를 판별하는 함수( Math.sqrt()) 를 먼저 찾아보고 

그러고 나서 Math.sqrt(n) 값이 정수인지 판별하는 함수(Number.isInteger())를 찾았다. 

정수를 판별하는 방법은 하나 더 있었는데 Number.isInteger() 함수가 더 간결하고 직관적이었다.

다른 방법 하나를 더 보자면 나머지 연산자를 활용하여 정수를 판별하는 것이다. 자세한 설명은 아래에 하겠다.

정수를 판별 한 뒤 삼항연산자를 사용하여 판별 값이 true일 경우 1을 반환, false일 경우 2를 반환하여 문제를 풀었다.

function solution(n) {
    var answer = 0;
    answer = Number.isInteger(Math.sqrt(n)) ? 1:2;
    return answer;
}

 

👀 Math.sqrt()

Math.sqrt() 메서드는 숫자의 제곱근을 반환한다.

Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095

Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN : 숫자가 음수면 NaN 반환

👀 Number.isInteger()

Number.isInteger() 메서드는 파라미터로 입력받은 값이 정수인지 판단한다.

Number.isInteger(10); // true
Number.isInteger(0); // true
Number.isInteger(-10); // true
Number.isInteger(123.1); // false

👀 나머지 연산자(%) 활용

나머지 연산자(%)는 두 수를 나누었을 때 나머지 값을 구해준다.

정수는 1로 나누었을 때 항상 나머지가 0인 것을 이용하여 정수를 체크할 수 있다.

나머지 연산자를 사용하여 문제를 풀면 이렇게 소스코드를 작성할 수 있겠다.

function solution(n) {
  var answer = 0;
  answer = Math.sqrt(n) % 1 === 0 ? 1 : 2;
  console.log(answer)
  return answer;
}

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유