정수제곱근 판별하기 (Level 1)
문제
nextSqaure함수는 정수 n을 매개변수로 입력받습니다.
n이 임의의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 임의의 정수 x의 제곱이 아니라면 ‘no’을 리턴하는 함수를 완성하세요.
예를들어 n이 121이라면 이는 정수 11의 제곱이므로 (11+1)의 제곱인 144를 리턴하고, 3이라면 ‘no’을 리턴하면 됩니다.
풀이
function nextSqaure(n){
if ( Number.isInteger(Math.sqrt(n)) ) {
return Math.pow((Math.sqrt(n)+1), 2)
} else {
return "no"
}
}
루트n이 정수인지 판별 후에 참이면 루트n에 1을 더해 제곱한 값을 리턴하고 거짓이라면 no를 출력
메서드를 많이써서 깔끔해보이지 않으니 찝찝하다
다른 사람의 풀이
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;
}
반복문, 조건문으로 풀이한 식 따봉이 8개인데 코드를 보며 이해하기는 쉽지만 복잡도는 O(N)이다.
내 코드가 더 낫다! 빼액!! (비하발언아님)