리트코드 - 263. Ugly Number

홍성진·2023년 3월 9일
0

리트코드 - 263. Ugly Number

어떤 수가 소인수로 2, 3, 5만을 갖고 있으면 그 수를 ugly number라고 합니다. 이때 주어진 n이 ugly number인지 판별하는 문제입니다. 2, 3, 5로 나누어 떨어지지 않을 때까지 나눠서 결과가 1인지 아닌지 확인해보면 됩니다. 1이 아니면 다른 소수인가 있는거니까요.

n이 0일때 false를 요구하는데 좀 특이하네요. 0은 모든 소수를 소인수로 갖는다고 상정한 것 같습니다. (참고링크 : vacuous trueth)

class Solution {
    public boolean isUgly(int n) {
        int[] uglies = new int[] {2, 3, 5};

        if (n == 0) {
            return false;
        }

        for (int u : uglies) {
            while (n % u == 0) {
                n /= u;
            }
        }

        return n == 1;
    }
}

0개의 댓글