개발 공부/알고리즘

[프로그래머스 알고리즘] "정수 제곱근 판별" JavaScript / Math.sqrt (), Math.pow()

U_D 2022. 3. 16. 12:24

1. 문제 설명

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

 

 

 

2. 제한 조건

n은 1이상, 50000000000000 이하인 양의 정수입니다.

 

 

 

 

3. 예시

입력/출력

 

4. 풀이

[Math.sqrt / Math.pow 활용]

  1. 만약에 n의 제곱근을 1로 나눈 나머지가 0이라면 => 정수라면
  2. n의 제곱근에 1을 더한 값의 제곱값을 저장
  3. 그게 아니라면 -1을 저장
//Math에 두가지 메쏘드가 있는걸 알고있어서 검색해서 풀기!
function solution(n) {
    var answer = 0;
    if (Math.sqrt(n) % 1 === 0) {
        answer = Math.pow((Math.sqrt(n) + 1),2)
    } else {
        answer = -1
    }
    return answer;
}

 

 

 

[while / if]

근본의 while만 쓴 사람의 풀이

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;
}