smooth waters run deep

1d-1c/Programmers

Level1_정수 제곱근 판별 (JAVA)

yeon_11 2020. 12. 13. 15:39
 

코딩테스트 연습 - 정수 제곱근 판별

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

programmers.co.kr

class Solution {
    public long solution(long n) {
    
        double num = Math.sqrt(n);

        return num==(long)num ? (long)Math.pow(num+1,2) : -1;
    }
}

 

 

 

Math.sqrt()

 

- 제곱근 구할 때 이용한다.  예: 루트25 = 5 = (int)Math.sqrt(25)

- 리턴 값 : double 형

 

 

 

'정수' 인지 어떻게 확인할까?
double num1 = 3.5;
double num2 = 4.0;

if(num1 == (int)num1) // 3.5 != 3
	System.out.println("num1은 정수");
else
	System.out.println("num1은 정수가 아님");
    
if(num2 == (int)num2) // 4.0 == 4
	System.out.println("num2는 정수");
else
	System.out.println("num2는 정수가 아님");

 

'변수 == (int)변수' 형태로 정수인지 확인이 가능하다.

 

만약 정수의 범위가 int형의 범위를 초과하는 long형은 어떻게 판별할까?

똑같다. '변수 == (long)변수' 형태로 사용하면 된다.