임의의 양의 정수 n이 주어질 때, n의 제곱근이 정수이면 (√n + 1)²을, 아니면 -1을 반환하는 문제이다.
n = 121 → √121 = 11 (정수) → (11+1)² = 144
n = 3 → √3 = 1.732... (정수 아님) → -1
Math.sqrt(n)으로 제곱근 구하기n = 9 → x = 3.0
(long)x = 3 → (double)3 = 3.0 == 3.0 ✅ 정수
n = 10 → x = 3.1622...
(long)x = 3 → (double)3 = 3.0 ≠ 3.1622 ❌ 정수 아님
구체적으로 정리한 풀이 흐름:
Math.sqrt(n)으로 제곱근 x 구하기(double)(long) x == x로 정수 여부 판별(long)((x + 1) * (x + 1)) 반환-1 반환class Solution {
public long solution(long n) {
double x = Math.sqrt(n);
if ((double)(long) x == x) {
return (long) ((x + 1) * (x + 1));
} else {
return -1;
}
}
}
