[Algorithm] 정수 제곱근 판별

미누·2023년 3월 22일
0

Algorithm

목록 보기
2/8
post-thumbnail

프로그래머스 - 정수 제곱근 판별

해당 문제에서 제곱근을 활용하여 양의 정수 n이 양의 정수 x의 제곱인지 아닌지 판별하기 위하여 Math.sqrt() 메소드를 사용하였다.

허나, 처음 제출하였던 해당 코드는 테스트 케이스 3, 6, 13번에서 틀렸다고 하는 것!

function solution(n) {  
    return Math.sqrt(n)**2 === n ? (Math.sqrt(n)+1)**2 : -1;
}

왜? 라는 의문에 '질문하기' 글을 둘러보던 중 아래와 같은 답변을 참고하여 이해 할 수 있었다.

n이 11일 경우, 11의 제곱근은 3.xx 라는 값으로 이는 양의 정수 x가 되질 않아 -1를 출력하여야 한다.
하지만, 이와 같은 예외를 고려하질 않아 그대로 연산을 진행하여 18.xx 이라는 값을 최종 return 하게 되어 테스트 케이스에서 오답이 발생한 것이다.

이에 아래와 같이 Math.ceil() 혹은 Math.floor() 등의 메소드를 활용하여 강제로 소수점 값을 버린 뒤 연산을 진행하면 모든 테스트 케이스를 통과할 수 있다.

function solution(n) {  
    return Math.ceil(Math.sqrt(n))**2 === n ? (Math.ceil(Math.sqrt(n))+1)**2 : -1;
}
profile
Dev Notes, with bit of JS?

0개의 댓글