★ 문제
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
(n은 1이상, 50000000000000 이하인 양의 정수입니다.)
★ 문제 해결 과정
처음에는 if문을 사용하여 n/x === x 일 경우, (x+1) * (x+1)을 return하고,
n/x !== x 일 경우, -1을 return한다라고 하려했으나.
굳이 그럴 필요 없이 Math.sqrt(n)를 이용하면 제곱근에 접근할 수 있었다.
처음에 x에 대한 정의도 내리지않은채로 수식을 세워서 계속 오류가 났었는데 계속된 오류에 다른 방법을 찾게 되었다.
아래와 같이 하면 굳이 x에 대한 정의 없이 제곱근을 구할 수 있었다.
★ 제출한 문제 답안
function solution(n) {
for (let i = 1; i <= n; i++) {
if (i * i === n) {
return (i + 1) * (i + 1);
}
}
return -1;
}
'스파르타 (React_6기) 본캠프' 카테고리의 다른 글
2024. 08. 16. (알고리즘 - 하샤드 수) (0) | 2024.08.16 |
---|---|
2024. 08. 14. (알고리즘 - 정수 내림차순으로 배치하기) (0) | 2024.08.14 |
2024. 08. 12. (알고리즘 - 문자열을 정수로 바꾸기) (0) | 2024.08.12 |
2024. 08. 12. (알고리즘 - 자연수 뒤집어 배열로 만들기) (0) | 2024.08.12 |
2024. 08. 12. (알고리즘 - x만큼 간격이 있는 n개의 숫자) (0) | 2024.08.12 |