코딩 테스트 풀이 🛠

[프로그래머스] 정수 제곱근 판별

엄성준 2023. 1. 4. 11:08

문제 설명

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

 

입출력 예

 

n return
121 144
3 -1

 

나의 풀이

1
2
3
4
5
6
7
8
9
10
function solution(n) {
 
    const sqrt = Math.sqrt(n);
    
    if (sqrt % 1 !== 0) { 
        return -1;
    } else {
        return Math.pow(sqrt+1,2); 
    }
}
cs

 

문제를 풀며 느낀 점

- 먼저 Math.sqrt() 함수를 통해서 매개변수 n 루트를 씌운 값을 얻었습니다. 아래는 Math.sqrt() 예제입니다.

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

Math.sqrt(1);  // 1
Math.sqrt(0);  // 0
Math.sqrt(-1); // NaN

- 다음으로 sqrt를 1로 나눈 나머지 값이 0이 아니라면 retrun -1을 해주었는데요. 왜 그렇게 해주었냐면 위의 두 번째 예제처럼 1.234234234234의 값을 1로 나누면 1이 아니기 때문입니다. 즉 매개변수 n에 루트를 씌웠을 때 소수점으로 떨어진다면 제곱근이 아닙니다.

- 그 후 Math.pow() 함수를 사용했는데 Math.pow(number, (제곱 수))를 넣어서 값을 return 해주었습니다.