알고리즘/JavaScript 알고리즘

[프로그래머스][JavaScript]제곱수 판별하기 (JavaScript)

지니어스팍 2023. 3. 11. 17:00
728x90
728x90

문제 설명

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 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합니다.

 

나의 풀이

function solution(n) {
    let answer = 2;
    for(let i=0;i<=1000;i++){
        if(i*i === n){
            answer = 1;
            break;
        }
    }
    return answer;
}

다른 사람의 풀이

1. 

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

2.

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

새롭게 알게된 것

Number.isInteger() : 숫자가 정수인지 true/false로 판결해주는 메서드

 

Math.sqrt() : 함수 인자로 값을 넘겨주면 루트 값을 반환한다.

만약 매개변수가 음수이면 NaN을 반환한다.

Math.sqrt(4); //2
Math.sqrt(2); //1.414213562373095
Math.sqrt(-1); //NaN

 

Math.pow() : 함수 인자로 값을 넘겨주면 제곱값을 반환한다.

Math.pow(7,2) // 49

// fractional exponents
Math.pow(4,0.5) // 2 (square root of 4)
Math.pow(8,1/3) // 2 (cube root of 8) -> 2*2*2


// signed exponents
Math.pow(7, -2);   	// 0.02040816326530612 (1/49)
Math.pow(8, -1/3); 	// 0.5

// signed bases
Math.pow(-7, 2);   	// 49 (squares are positive)
Math.pow(-7, 3);   	// -343 (cubes can be negative)
Math.pow(-7, 1/3); 	// NaN

 

출처(감사합니다💜)

https://velog.io/@chayezo/%EB%A3%A8%ED%8A%B8%EC%99%80-%EC%A0%9C%EA%B3%B1-%EA%B5%AC%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

728x90
728x90