프로그래머스

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

Paragon53 2025. 3. 19. 09:42
minecraft-font

JAVA

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12934

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

입력한 값이 어떤 제곱의수인지 판별하기 위해 체크하는 것으로 참이면 어떤 제곱의수 +1 하고 제곱한 수를 출력한다.

아니면 -1을 반환한다.

 

ex) 121은 11의 제곱수 이므로 11+1 =12, 12의 제곱은 144이다.

       3이면 제곱수가 아니르모 -1을 반환한다.ODE

풀이

java에서는 Math라는 클래스를 지원한다. 

 

주목해야 할것 은 Math.sqrt인데, 루트(√n)가 있다. √n 는 ( (n^2) == k(0이 아닌 정수) )을하면 정수가 된다. 121을 루트에넣었을때 소수점 아닌 수가 아닌 정수가 나와야 한다.

 

다른 해답에서는 Math.pow()과 사용하여,   (n)값을 한 뒤 2제곱 하여 입력값 n이 나온다면 참 아니면 -1을 반환하는 방법이 있다. 

 

참고. √n은 반환형이 double (실수형)이므로 캐스팅이 필요하다.

 

CODE

 public long solution(long n) {
   long answer = 0;
   if(Math.sqrt(n)%1 ==0){
      answer = (long) Math.sqrt(n);
      answer = (answer + 1) * (answer + 1);
   }else{
      answer = -1;
   }

    return answer;
 }

 

public long solution1(long n) {
   long answer = 0;
   if(Math.pow(Math.sqrt(n) ,2) == n){
      answer =(long) Math.pow(Math.sqrt(n) + 1 ,2);
   }else {
      answer =1;
   }

   return answer;
}