새소식

알고리즘 문제풀이/프로그래머스

[수학] level1 프로그래머스 정수 제곱근 판별 자바(java) 풀이

  • -

프로그래머스 연습문제 정수 제곱근 판별 풀이

문제 정리

  1. 양의 정수 n이 주어질때 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 한다.
  2. n이 어떤 정수 x의 제곱이라면 (x+1)^2을 리턴 아니라면 -1을 리턴한다.


문제 풀이

  1. 주어진 수 n을 루트 취해본다. 취한 값이 floor한 값과의 차이가 없다면 n은 Math.sqrt(n)의 제곱이 된다.
    예를들어 121이라면 루트를 했을때 11입니다.
    이 경우 floor한 값은 그대로 11 입니다. 뒤의 소수점이 없기 때문입니다. 이 경우 (Math.sqrt(a)+1)^2을 구합니다.
  2. 만약 어떤 수의 제곱이 아니라면 루트를 취했을때 뒤에 소수점이 남기 때문에 floor한 값과 차이는 0이 아니게 됩니다.


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

Math의 sqrt를 이용하면 제곱근을 구할 수 있습니다.
Math의 floor는 소수이하를 버린다고 보시면 됩니다.

    public static long solution(long n) {
        double a = Math.sqrt(n);
        if(a - Math.floor(a) == 0){
            long b = (long)(a+1);
            return (long)Math.pow(b,2);
        }
        else
            return -1;
    }
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.