class Solution { public long solution(long n) { long answer = -1; int i = 1; while(n>=i){ if(n==i*i){ answer= (i+1)*(i+1); break; } i++; } return answer; } }
n이 엄청 큰 수일 때 while문을 통해 i를 1부터 1씩 더해가며 n의 제곱근을 찾아야 하므로 시간이 오래걸린다.
import java.util.*; class Solution { public long solution(long n) { Double sqrt = Math.sqrt(n); // n의 제곱근을 리턴 if(sqrt == sqrt.intValue()){ // sqrt 값이 양의 정수 라면 return (long)Math.pow(sqrt + 1, 2); // sqrt에 1을 더한 값을 제곱하여 long으로 형변환 후 리턴 } else return -1; // 그렇지 않으면 -1 리턴 } }
Math.sqrt(double)
java.lang.Math 클래스의 메소드로 매개변수에 double 값을 입력하면 제곱근을 double값으로 리턴 한다.
음수 입력 시 NaN 출력.
Math.sqrt(9) => 3.0
Math.pow(double, double)
java.lang.Math 클래스의 메소드로 첫번째 매개변수 밑, 두번째 매개변수 지수를 입력하면 제곱 값을 리턴 한다.
Math.pow(3, 4) => 81.000000