728x90
문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고,
n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
문제 풀이 방법
- 이번 문제는 Math 메서드를 사용해서 풀어봤다.
- 우선 sqrt()를 이용했지만 이 메서드는 소숫점 8자리밖에 안나와 정확도가 떯어져서
첫번째 시도에서는 불통이 3개있었다. - 이 부분은 ceil()을 사용해 해결했는데, 소수점 자리에 값이 있다면 +1이 되는 성질을 이용해
비교시 결과를 위해 사용해서 풀었다.
코드
function solution(n) {
const num = Math.ceil(Math.sqrt(n));
if(Math.pow(num, 2) === n){
return Math.pow(num+1, 2);
}
else{
return -1;
}
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
1Level / 연습문제 / 문자열을 정수로 바꾸기 (0) | 2022.11.08 |
---|---|
1Level / 연습문제 / 문자열 내 p와 y의 개수 (0) | 2022.11.07 |
1Level / 연습문제 / 자연수 뒤집어 배열로 만들기 (0) | 2022.11.03 |
1Level / 연습문제 / 햄버거 만들기 (못 품, 다른 사람 코드 참고) (0) | 2022.10.27 |
1Level / 연습문제 / 약수의 합 (0) | 2022.10.27 |