본문 바로가기
알고리즘/JavaScript 알고리즘

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

by 지니어스팍 2023. 3. 11.

♥ 목차 ♥

    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