정수 제곱근 판별

문제정의


제곱근이 정수인지 판별하는 문제이다. 만약 제곱근이 정수라면 제곱근의+1의 제곱을 출력한다.

문제풀이


전체 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class IntegerRoot {

//프로그래머스 문제풀이 level1 정수 제곱근 판별
public static void main(String[] args)
{
long n = 121;
long answer = 0;
double fp;
int ip;
double root = Math.sqrt(n);
ip = (int)root;
fp = root - ip;
if(fp > 0)
answer = -1;
else
answer = (long)Math.pow(ip+1, 2);
System.out.print(answer);
}

}

제곱근이 정수라는 것은 소수부분이 0이어야 한다는 것이다. 주어진 정수 n의 제곱근을 구해 정수부와 소수부로 나눈다. 만약 소수부가 0보다 크면 정수가 아니라는 의미이므로 -1을 반환한다. 만약 소수부가 0이라면 정수부분의 +1하여 제곱한 값을 넘겨준다. 총 시간복잡도는 \(O(1)\)이다.

테스트