[프로그래머스_ Java_Lv1] 정수 제곱근 판별, 하샤드의 수

박경희·2024년 1월 31일

코딩테스트

목록 보기
34/69

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

0개의 댓글