공부/코딩테스트

Q. 정수 제곱근 판별

뀨뿌뀨뿌 2023. 6. 19. 23:24

임의의 양의 정수 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