문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예 설명
입출력 예#1121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#23은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
function solution(ans) {
//1. 특정숫자의 거듭제곱 값을 계산해주는 메소드 Math.sqrt()를 사용해 정수 x를 구한다.
//2. 특정숫자의 제곱근 값을 계산해주는 메소드 Math.pow를 사용해 정수x+1한 것에 제곱을 구한다.
//3. Math.sqrt(ans)로 정수x를 이기 때문에 소수점 확인하고 true/false로 반환하는 메소드
// Number.isInteger()를 사용해 반환해 해서 맞는값을 return 해준다.
return Number.isInteger(Math.sqrt(ans)) ? Math.pow( Math.sqrt(ans)+1, 2) : -1
}
다른 사람들 풀이
function nextSqaure(n){
var result = 0;
var x = 0;
// x*x < n이 제곱값이 제곱한 값보다 작다면 x = x + 1한다.
while (x*x < n){
x++;
}
// x*x == n 값이 같다면 제곱근이기 때문에 x*x를 리턴한다.
if (x*x == n){
x++;
result = x*x;
}else{
result = 'no';
}
return result;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + nextSqaure(121));
function nextSqaure(n){
// n % Math.sqrt(n) 로 나누었어서 떨어지는 값이 0 정수이기에
switch(n % Math.sqrt(n)){
case 0:
// Math.pow(Math.sqrt(n) + 1, 2)를 리턴하고
return Math.pow(Math.sqrt(n) + 1, 2);
default:
return "no"
}
}
'개발일기 > 알고리즘' 카테고리의 다른 글
하샤드 수 (0) | 2021.11.10 |
---|---|
콜라츠 추측 (0) | 2021.11.10 |
정수 내림차순으로 배치하기 (0) | 2021.11.10 |
자연수 뒤집어 배열로 만들기 (0) | 2021.11.10 |
자릿수 더하기 (0) | 2021.11.10 |