leetcode 263, Ugly Number

NJW·2022년 11월 18일
0

코테

목록 보기
114/170

들어가는 말

문제 자체는 그리 어렵지 않았지만, 문제를 이해하는 게 어려웠던 문제... 특히 영어로 되어 있어서 더더욱...

간단하개 말해서 오로지 2, 3, 5로만 나눠지는 수를 구하는 거다. 해당 수를 Ugly Number로 지칭하는데 왜 그런지는 모르겠다...

여기서 주의해야 할 점이 하나 있는데, 문제에서는 오로지 양의 정수만을 설명했지만 입력값으로 음의 정수가 나올 수도 있다. 그러므로 음의 정수가 나올 때는 false를 반환한다.

코드 설명

2, 3, 5로 차례대로 n을 나눠준다. 만일 2 혹은 3 혹은 5로 n이 나눠지면 나눠질 때 까지 반복문을 반복한다. 그리고 더이상 나눠질 수 없으면 다른 숫자로 위의 과정을 반복한다.

그렇게 해서 n이 1이 되면 2, 3 혹은 5로 나눠 떨어진다는 의미이니 true를 반환하고 아니라면 false를 반화하면 된다.

class Solution {
    public boolean isUgly(int n) {
        //2, 3, 5 중 아무거나 나눠지면 ugly number이라는 뜻

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

        int[] num = new int[] {2, 3, 5};

        for(int i : num){
            n = Divide(n, i);
        }

        if(n != 1){
            return false;
        }

        return true;

    }

    public int Divide(int n, int i){
        while(n%i == 0){
            n = n/i;
        }
        return n;
    }
}

여담

소인수를 prime numbers이라고 한다.

profile
https://jiwonna52.tistory.com/

0개의 댓글