❗ 문제
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/courses/30/lessons/12934?language=javascript
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고,
n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
❓ 나의 풀이
function solution(n) {
let sqrt = Math.sqrt(n);
return n % sqrt ? -1 : (sqrt+1)**2;
}
제곱근을 반환하는 Math.sqrt() 를 이용해서 문제를 풀었다.
우선, Math.sqrt 함수를 사용하여 주어진 정수 n 의 제곱근을 구했다.
테스트 케이스로 보면, 루트 121 → 11 / 3 → 1.732050... 이 반환된다.
++) Math.sqrt(x)
숫자(x)의 제곱근을 반환하는 함수이다.
만약 숫자가 음수이면 NaN 을 반환한다.
루트 3과 같은 무리수는 제곱이 될 수 없으니
n % sqrt 의 값이 0으로 나누어 떨어지는 경우에만 즉, 제곱근이 정수인 경우에만
(sqrt+1) ** 2 의 값을 반환하도록 했다.
++) 거듭제곱(**)
왼쪽에 오는 수가 밑, 오른쪽에 오는 수가 지수이다.
2 ** 3 = 2³ 이런 식으로!
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 음양 더하기 (Level 1, JavaScript) (0) | 2024.09.19 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 (Level 1, JavaScript) (3) | 2024.09.16 |
[프로그래머스] 문자열 내 p와 y의 개수 (Level 1, JavaScript) (0) | 2024.09.09 |
[프로그래머스] 하샤드 수 (Level 1, JavaScript) (0) | 2024.09.04 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 (Level 1, JavaScript) (0) | 2024.08.30 |