[프로그래머스] Level0. 제곱수 판별하기

Benjamin·2023년 2월 9일
0

프로그래머스

목록 보기
17/58

내 풀이

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));

소수점까지 출력되는걸 볼 수 있다.
왜지?? 제곱근이 아니면 딱 나누어떨어지지않구나..

0개의 댓글