문제 설명
임의의 양의 정수 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 해주었습니다.
'코딩 테스트 풀이 🛠' 카테고리의 다른 글
[프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) | 2023.01.04 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2023.01.04 |
[프로그래머스] 하샤드 수 (0) | 2023.01.03 |
[프로그래머스] 문자열 내 p와 y의 개수 (0) | 2023.01.03 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 (0) | 2022.12.30 |