정수 제곱근 판별

김세호·2022년 12월 13일
0

문제

내 풀이(시간 초과)

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

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

0개의 댓글