문제
나의 풀이
function solution(n) {
let num = Math.pow(n, 0.5);
return Number.isInteger(num) ? Math.pow(num + 1, 2) : -1;
}
KEY POINT : Math.pow(), isInteger()
Math.pow(base, exponent)
base: 밑 값, 거듭제곱에서 곱한 수
exponent: 제곱지수
Number.isInteger()
주어진 값이 정수인지 판별
거듭제곱을 구한 수의 0.5제곱은 원래 값이라 생각하여 n에 0.5제곱한 값을 변수에 담아 제곱근을 구했다.
그 제곱근에 +1을 한상태로 거듭제곱을 한 값을 구한다. 여기서 그 제곱을 한 값이 정수일경우 제곱을 하고, 실수일 경우 -1을 도출하면 끝.
제곱근을 구하는 방법만 알면 쉽게 풀렸던 문제였다고 생각한다.
다른 사람 풀이방식
function nextSqaure(n){
//함수를 완성하세요
switch(n % Math.sqrt(n)){
case 0:
return Math.pow(Math.sqrt(n) + 1, 2);
default:
return "no"
}
}
평소에 잘 사용하지않던 switch문을 사용하여 해결하신 코드를 들고 와보았다.
sqrt함수는 함수는 숫자의 제곱근을 반환한다. 제곱이 이루어진 수를 가지고와서 나누어진 값이 0 일경우 (true =0, false=1 을 사용한걸까? 추측)
case 0으로 넘어가고 그렇지않으면 "no"
pow()함수에도 제곱근을 구하는 방법이 있었지만 조금더 간편하게 구할 수 있는 sqrt함수를 사용하셨기에 글쓴이에겐 좋은 참고가 되었다.
'코딩테스트 입문' 카테고리의 다른 글
콜라츠 추측 (0) | 2022.11.21 |
---|---|
제일 작은 수 제거 (0) | 2022.11.21 |
정수 내림차순으로 배치하기 (0) | 2022.11.21 |
자연수 뒤집어 배열로 만들기 (0) | 2022.11.21 |
자릿수 더하기 (0) | 2022.11.21 |