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

정선모·2022년 1월 20일
0

프로그래머스

목록 보기
26/91

문제설명 :
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한사항 :

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.
  • Math 클래스의 sqrt 메소드와 pow 메소드에 대해 배운 문제였습니다. 리턴 변수 형식이 double 이므로 형변환에 주의해서 풀었습니다.

    class Solution {
        public long solution(long n) {
            double answer = 0;
            // answer에 Math 클래스의 메소드를 사용할것이기 때문에,
            // 초기값 long 타입 대신 double로 선언한다.
            
            double x = Math.sqrt(n);
            // sqrt 메소드를 사용해 n의 제곱근인 x를 선언한다.
            
            if(x == (long)x){
                // x와 long 타입으로 캐스팅한 x가 값을때,
                // sqrt 메소드 사용후 소수점 자리가 없이 딱 나누어 떨어진것이기 때문에
                // 해당 조건을 제곱근 일때의 조건으로 설정하였다.
                answer = Math.pow(x+1, 2);
                // 문제 조건을 pow 메소드를 사용해 return한다.
            }else{
                answer = -1;
                // 그외에 경우엔 -1을 return 한다.
            }
            
            return (long)answer;
            // double 타입으로 선언했기 때문에, long 타입으로 캐스팅한다.
            // 제곱근인 경우 버려지는 소수점이 없기때문에 문제 발생하지 않는다.
        }
    }

    [프로그래머스] 정수 제곱근 판별 링크

    profile
    개발자가 되어가는 비전공자

    0개의 댓글