[프로그래머스][자바(JAVA)] 정수 제곱근 판별 -모두의개발

2022. 9. 11. 19:14알고리즘/프로그래머스

※ 요약

-  n에 대하여 x가 양의 정수이며 제곱일경우 x+1 제곱을 구하고 정수가 아닐 경우 -1을 리턴하는 문제

 


  • 풀이1 (for문 if문 이용하기)

1. answer을 -1로 정의 해준다

2. 1~n값만큼 반복해준다

3. i * i == n 인 if문을 정의 해줘 맞을경우 answer = (i+1)*(i+1) 정의해주고 break문을 실행시킨다

 

※ 주의 int형이 아닌 long 으로 해줘야 된다

<정답코드1>

class Solution {
    public long solution(long n) {
        long answer = -1; //양의정수가 아니면 -1
        for(long i = 1; i<=n; i++){ //1~n까지 반복
            if(i * i == n){
                answer = (i+1)*(i+1); // i*i==n 일경우 i+1의 제곱
                break;
            }
        }
        return answer;
    }
}
  • 풀이2 (Math.sqrt() 함수 이용하기)

 Math.sprt()는 제곱근을 반환해주는 함수이다

 

1. answer을 -1로 정의 해준다

2. Math.sprt()함수를 이용해 n의 제곱근을 long형으로 변환해  sqrRt에 정의해준다

3. sqrRt 제곱이 n과 같다면  sqrRt+1의 제곱을 answer에 정의

 

※ 주의 마찬가지로 int형이 아닌 long 으로 해줘야 된다

<정답코드2>

class Solution {
    public long solution(long n) {
        long answer = -1; //양의정수가 아니면 -1
        long sqrRt = (long)Math.sqrt(n);// n의 제곱근을 long형으로 
                                        //반환해 sqrRt에 정의
        if (sqrRt * sqrRt == n) { //sqrRt의 제곱이 n과 같다면
                                  
            answer = (sqrRt + 1) * (sqrRt + 1); //sqrRt+1의 제곱을 answer에 정의
        }
        return answer;
    }
}