728x90
정수 : 소수점 이하의 값을 갖지 않는 수
Math.sqrt 과 Number.isInterger 에 대해 알아야하고,
연산자 ** 에 대한 확실한 이해가 필요하다.
function solution(n) {
let x = Math.sqrt(n) ;
//n의 제곱근값을 가진 x변수 선언
if ( Number.isInteger(x) ) {
return (x+1)**2;
// x가 정수라면 (x+1)의 제곱을 리턴해준다.
//return 할때 =는 필요없음. 주어진 값을 함수 호출기점으로 반환
} else {
return -1;
}
}
Math.sqrt( )
Math.sqrt(n)함수는 괄호안에 있는 숫자의 제곱근을 반환한다.
n은 숫자
반환값 : 주어진 숫자 x의 제곱근
Number.isInteger()
Number.isInteger()함수는 파라미터로 입력받은 값이 정수인지 판단한다.
이함수는 인터넷익스플로러에서는 동작하지않는다
if ( Number.isInteger(x) )
x가 정수인지를 판단 해야 하는 이유 :
예를 들어 n이 16일 경우 x는 4, -4이다.
n이 17일 경우 x는 정수가 아니다. x는 4.123105625617661이다.
(문제의 조건처럼 x가 정수를 벗어나면 안된다)
그렇기에 if문으로 x는 정수라는 조건이 참일 경우 x+1의 제곱을 리턴해야한다.
거듭제곱 연산자(**)
제곱을 해주는 연산자다
왼쪽 피연산자를 밑, 오른쪽 피연산자를 지수로 한 값을 구합니다.
왼쪽 피연산자를, 오른쪽 피연산자 숫자만큼 제곱해준다. (x+1)**2 = (x+1)*(x+1)
예: console.log(4** 5);
// expected output: 16
console.log((2 ** 3) ** 2);
// expected output: 64
아래는 Math.pow를 사용한 답안이다.
function solution(n) {
var answer = 0;
let x = Math.sqrt(n);
if(Number.isInteger(x)){
answer = Math.pow(x+1,2);
}
else {
return -1;
}
return answer;
}
Math.pow()
Math.pow(a, b)
인자로 a와 b를 전달하며, a의 b 제곱이 리턴됩니다. 즉, a를 b번 곱한 값이 리턴됩니다.
728x90
'Programmers > javascript' 카테고리의 다른 글
[JS] Programmers 최대공약수와 최소공배수 ☑ (0) | 2022.06.10 |
---|---|
[JS] Programmers 모의고사 ☑ (0) | 2022.06.09 |
[JS] Programmers K번째수 ☑ (0) | 2022.06.09 |
[JS] Programmers 이상한 문자 만들기 ☑ (0) | 2022.06.08 |
[JS] Programmers 부족한 금액 계산하기 ☑ (0) | 2022.06.08 |