본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 37 - 제곱수 판별하기)

728x90

 

# 문제

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



# 답안

// 1. 입력: n -> 정수 1,2,3 같은거
// 2. 출력: n이 제곱수면 1, 아니면 2


// 방법 1) if...else문 사용
function solution(n) {
   let sqrt = Math.sqrt(n);  // n의 제곱근을 계산
   if (Number.isInteger(sqrt)) {  // 계산된 제곱근이 정수인지를 확인 
       return 1;  // 정수이면, 1 반환
   }else{
       return 2;  // 정수가 아니면, 2 반환
   }
}


// 방법 2) 삼항연산자 사용
function solution(n) {
  return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}

 

Math.squrt()
- 주어진 숫자의 제곱근을 반환하는 JavaScript의 내장 함수
- sqrt는 "square root"의 약어에서 유래
- 예를 들어, Math.sqrt(25)를 호출하면 25의 제곱근인 5가 반환

 

Number.isInteger()
- 주어진 값이 정수인지 여부를 판단하는 JavaScript의 내장 함수
- Number는 JavaScript의 내장 객체 중 하나이며, isInteger()은 이 객체의 정적(static) 메서드
- "Integer"는 영어로 "정수"를 의미

 

ex. n=26인 경우

1. Math.sqrt(n)을 통해 제곱근을 계산 ▶ Math.sqrt(26)는 약 5.099
2. Number.isInteger(sqrt)를 통해 계산된 제곱근이 정수인지 확인
3. sqrt가 정수가 아니므로 Number.isInteger(sqrt)는 false를 반환
4. 따라서 if 조건문에서는 false가 됨 ▶ else 블록으로 이동
5. else 블록에서는 2를 반환

따라서 주어진 자연수 n이 26인 경우에는 함수가 2를 반환
728x90