문제 설명 |
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. |
제한 조건 |
n은 1이상, 50000000000000 이하인 양의 정수입니다. |
function solution(n) {
var answer = 0;
//sqrt-루트 / isInteger-정수인지 판별
if (Number.isInteger(Math.sqrt(n))) { //입력값의 제곱근이 정수인지 판별해 정수이면 진행
answer = (Math.sqrt(n)+1)*(Math.sqrt(n)+1) //(제곱근+1)의 제곱값을 반환
} else { //제곱근이 정수가 아닐때
answer = -1 //-1반환
}
return answer;
}
이 문제는 제곱근을 구하는 메소드를 알아야 풀 수 있었다.
난 몰라서 Math mdn을 찾아봤고 sqrt()라는 메소드를 알게되어 사용했다.
다른사람의 풀이 중 제곱근 메소드를 사용하지 않은 게 있어 가져와 보았다.
function solution(n) {
var answer = 0;
for(let i=0, a=0; i<=n; i++){
if(n/i===i){
a = i + 1
return a*a
} else {
answer = -1
}
}
return answer;
}
for문을 0부터 n까지 돌려서 n / i === i인것 즉, 0~n사이에 제곱근이 있는지를 판별해
(i+1)을 제곱한 것을 반환하는 형태로 풀이했다.
또한 만약 0~n까지 n의 제곱근이 없다면 -1을 반환하도록 풀이하였다.
'1차 공부 > 알고리즘' 카테고리의 다른 글
콜라츠추측 (0) | 2022.11.23 |
---|---|
제일 작은 수 제거하기 (0) | 2022.11.23 |
정수 내림차순으로 배치하기 (0) | 2022.11.23 |
자연수 뒤집어 배열로 만들기 (0) | 2022.11.23 |
자릿수 더하기 (0) | 2022.11.23 |