[프로그래머스] Lv 1. 정수 제곱근 판별

morecodeplease·2024년 3월 1일
0

프로그래머스 Lv 1

목록 보기
10/19
post-thumbnail

🌭 문제 설명

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

🍗 제한 사항

  • n1이상, 50000000000000 이하인 양의 정수입니다.

🎁 입출력 예시

  • 입출력 예 #1
    121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
  • 입출력 예 #2
    3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

😎 나의 풀이

function solution(n) {
  return Number.isInteger(Math.sqrt(n)) ? Math.pow(Math.sqrt(n)+1, 2) : -1; 
}

console.log(solution(121)); // 출력 : 144
console.log(solution(3)); // 출력 : -1
  1. Number.isInteger로 정수인지 판별.
  2. Math.sqrt()는 루트값을 구할 수 있고, Math.pow()는 제곱근을 구한다!
  3. Math.pow(7, 2); // 49 <- 이와 같이 첫번째 인자는 제곱할 값, 두번째 인자는 제곱할 횟수를 적어준다.
  4. false-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;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log("결과 : " + nextSqaure(121));
  1. 결과를 출력할 result 와 반복문을 실행할 x 를 선언한다.
  2. while문을 사용하여 x의 제곱이 n보다 작으면 x를 증가시키고 n과 같으면 x1증가시키고 제곱한 값을 result에 대입한다.
  3. n과 같지 않으면 'no'result에 대입하여 -1을 출력할 수 있게 해준다!

while문을 써서 풀었다는 것이 신기했고 'no'를 출력하면 -1이 출력된다는 사실도 새로 알게 되었다.🧲

profile
Everyday's a lesson

0개의 댓글