class Solution {
public int solution(int n) {
int root = (int)Math.sqrt(n);
return root*root == n ? 1 : 2 ;
}
}
Math.sqrt()를 썼을 때 딱 떨어지지않는 경우에도 (소수점이하 수가 있을 경우) 그 수가 그대로 반환된다.
그럼 이 반환값의 타입을 판별할까..싶다가 Integer은 함수를 써서 판별할 수 있다지만, int타입은 타입 판별을 어떻게 해야할지 모르곘어서 이런 로직을 썼다.
내 풀이도 괜찮지만, 다른 풀이에서 공부할 부분이 있어 가져왔다.
class Solution {
public int solution(int n) {
if (n % Math.sqrt(n) == 0) {
return 1;
} else {
return 2;
}
}
int % double -> double타입으로 연산될텐데,,
이럴 경우 0으로 딱 안나눠떨어지는건가?
실제로 예시 2를 코드로 찍어보니,
System.out.println(976 % Math.sqrt(976));
소수점까지 출력되는걸 볼 수 있다.
왜지?? 제곱근이 아니면 딱 나누어떨어지지않구나..