알고리즘 (코드카타)

정수 제곱근 판별

콛 다이어리 2024. 11. 11. 23:51

임의의 양의 정수 n에 대해,

n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고,

n이 양의 정수 x의 제곱이 아니라면

-1을 리턴하는 함수를 완성하세요.

 

라는 문제를 풀었다.

 

나는 왜 제곱근을 루트로 알았을까..

제곱근은 ±를 이야기 하는건데..

 

일단 답은

function solution(n) {
  let x = Math.sqrt(n);
 
  if (Number.isInteger(x)) {
      return (x + 1) * (x + 1);
  } else {
      return -1;
  }
}

이다.

 

설명을 하자면,

1. 변수 x에 제곱근을 저장한다.

Math.sqrt( )제곱근을 구하는 메서드

 

2. 변수 x가 정수인지 확인한다.

굳이 확인하는 이유:

n이 25인 경우에 Math.sqrt(25)는 5가 됨

하지만,

n이 26일 경우엔 Math.sqrt(26은 5.099라

정수가 아니기 때문..

즉, 정수가 아닌 경우가 있기 때문

 

3. (if 문이 참일 경우)

x가 정수라면 (x + 1)의 제곱을 return

 

4. (if 문이 거짓일 경우)

x가 정수라면 -1 리턴

'알고리즘 (코드카타)' 카테고리의 다른 글

나이 출력  (1) 2024.10.03
연속 부분 수열 합의 개수  (0) 2024.08.20
알고리즘 첫 수업  (0) 2024.08.01