
public static long solution(long n) {
long sqrt = (long) Math.sqrt(n);
if (sqrt * sqrt == n) {
return (sqrt + 1) * (sqrt + 1);
}
return -1;
}
Math.sqrt(n)은 double이므로 정확하게 sqrt * sqrt == n 으로 비교해주는 게 안전하다.
Math.pow()를 쓰면 double 계산이 많아지고 부동소수점 오차가 생길 수 있어서 가능하면 안 쓰는게 좋다.
문제에서 x가 양의 정수라고 했으니 (sqrt * sqrt == n)이 성립하면 그게 x이다.

public boolean solution(int x) {
int original = x;
int sum = 0;
while (x > 0) {
sum += x % 10;
x /= 10;
}
if (original % sum == 0) {
return true;
}else {
return false;
}
}
public boolean solution(int x) {
int original = x;
int sum = 0;
while (x > 0) {
sum += x % 10;
x /= 10;
}
return original % sum == 0;
}