풀이
function solution(n) {
let num = Math.sqrt(n);
if(num % 1 === 0 ) return (num+1) * (num+1)
else return -1
}
먼저 받은 정수를 sqrt 해준다,
만약 받은 정수가 제곱이 되는 수라면 1 나누었을때 나머지값은 항상 0 이기때문에
나머지값이 0 이면 받은 (정수값+1)를 제곱한 수를 리턴해준다.
만약 나머지값이 0이 안된다면 -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;
}
이분은 받은 정수값이 제곱수가 맞을때까지 x++ 반복해주는 while 문을 쓰셧다. 하지만 받은 정수값이 크다면
정보처리가 늦어지는 단점이 있다.
다른사람 풀이 2:
function nextSqaure(n){
var result = 0;
var n = Math.sqrt(n);
result = Number.isInteger(n) ? Math.pow(n+1, 2) : 'no';
return result;
}
이분은 먼저 받은 정수가 정수인지 체크해주는 isInteger() 를 쓰어, 맞다면 (n+1) 의 2제곱의 값을 주고 아니면
-1 값을 리턴한다. 깔끔하다.
'코드 풀이' 카테고리의 다른 글
하샤드 수 (0) | 2022.03.14 |
---|---|
콜라츠 추측 (0) | 2022.03.14 |
제일 작은 수 제거하기 (0) | 2022.03.14 |
정수 내림차순으로 배치하기 (0) | 2022.03.12 |
자릿수 더하기 (0) | 2022.03.12 |