오늘 뭐했냐/기억하면 좋을 문제들

제곱 수 판별하기

스스로에게 2023. 5. 26. 18:25

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

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

제곱근 그러니까 루트( )를 씌워주는 Math.sqrt() 메소드를 활용하였다

그리고 Number.isInteger() 정수인지 판별해주는 메소드를 사용하여 if문으로 처리했는데

당연히 if문은 삼항연산자로 변환이 가능하고 지금의 경우엔 선택지가 두 개니까

삼항연산자를 사용하는게 좋아보인다 

const solution = n => Math.sqrt(n)%1 ? 2 : 1;

그런데  Number.isInteger() 메소드 대신 나머지 연산자를 통해 1로 나눈 나머지가 0이면 정수인 것을 활용해도 된다

이처럼 오히려 메소드를 사용하지 않아도 짧은 코드가 나올 수 있다   

 

그리고 경우의 수가 두 개라면 꼭 삼항연산자를 고려해보자