임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
🚫제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
❗입출력 예
n | return |
121 | 144 |
3 | -1 |
😀 내가 푼 답
📜 Math.sqrt(n)을 통해 주어진 정수 n의 제곱근을 계산하고 Math.sqrt(n) % 1 === 0을 통해 제곱근이 정수인지 확인
% 연산자를 사용하여 제곱근을 1로 나눈 나머지가 0인지 확인(정수일 경우 Math.sqrt(n) % 1은 0을 리턴함)
Math.pow(Math.sqrt(n) + 1, 2)를 계산하여 제곱근 + 1 를 제곱한 결과를 리턴함
function solution(n) {
return Math.sqrt(n) % 1 === 0 ? Math.pow(Math.sqrt(n) + 1, 2) : -1;
}
- Math.pow(x, y)
- x를 y번 거듭제곱한 값을 계산하는 함수
😊 문제풀이 답안 OR 다른사람들 답안
// 1
function nextSqaure(n){
var result = 0;
var x = 0;
while ( x*x < n)
{
x++;
}
if (x*x == n)
{
x++;
result = x*x;
}else{
result = 'no';
}
return result;
}
// 2
function solution(n) {
let sq = Math.sqrt(n);
if(sq%1){
return -1
} else {
return (sq+1)*(sq+1);
}
}
'공부 > 코딩테스트' 카테고리의 다른 글
Q. 콜라츠 추측 (0) | 2023.06.21 |
---|---|
Q. 제일 작은 수 제거하기 (0) | 2023.06.20 |
Q. 정수 내림차순으로 배치하기 (0) | 2023.06.19 |
Q. 자연수 뒤집어 배열로 만들기 (0) | 2023.06.19 |
Q. 자릿수 더하기 (0) | 2023.06.19 |