임의의 양의 정수 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 |