[알고리즘] 정수 제곱근 판별 -JavaScript

wooder2050·2020년 8월 13일
4

알고리즘

목록 보기
12/26

Algorithm Problem with JavaScript — 12day

Problem

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

제한사항

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

입출력 예

1. 문제 이해하기

입력으로 들어온 숫자가 제곱으로 이루어진 숫자인지 판별한 다음에 제곱일 경우, 제곱근에 +1을 해서 다시 제곱해서 반환하고 제곱으로 이루어진 숫자가 아닐 경우, -1를 리턴하면 된다.

2. 해결 방법

숫자를 먼저 Math.sqrt를 이용해서 제곱으로 나누고 Math.floor로 정수로 만들어준다. 그 다음에 Math.pow를 통해서 다시 제곱을 한다. 이렇게 만들어진 수를 다시 입력으로 들어온 n과 비교한다. 만약에 제곱으로 이루어진 숫자라면 true가 나올 것이다. 하지만 제곱으로 이루어진 숫자가 아닐 경우, 제곱으로 나누고 Math.floor로 정수로 만드는 과정에서 값의 차이가 생길 것이다. 따라서 true일 경우 Math.pow(Math.floor(Math.sqrt(n)) + 1, 2)로 제곱근에 +1 한 값을 리턴하고 false일 경우, -1을 리턴하면 된다.

3. 코드 구현

4.결과 분석

profile
프론트엔드 신입 개발자입니다.

0개의 댓글