[프로그래머스] 유한소수 판별하기 - Java

Yunki Kim·2023년 1월 10일
0

프로그래머스

목록 보기
88/101
post-thumbnail

문제


링크


코드

class Solution {
    public int solution(int a, int b) {
        int bottom = b / gcd(a, b);
        while (bottom != 1) {
            if (bottom % 2 == 0) bottom /= 2;
            else if (bottom % 5 == 0) bottom /= 5;
            else return 2;
        }
        return 1;
    }

    static int gcd(int a, int b) {
        if (a < b) {
            int temp = a;
            a = b;
            b = temp;
        }

        if (b == 0) return a;
        return gcd(b, (a % b));
    }
}

리뷰

유한소수를 판별하기에 앞서 입력받은 분수가 기약분수의 형태를 갖추어야 한다.
기약분수란 더 이상 약분될 수 없는 분수를 뜻한다.

분자와 분모의 최소공배수를 구해 그 수로 나누어주게되면 기약분수를 만들 수 있다.

최소공배수를 구해 새로운 분모인 bottom을 만들어 준다.
이 때 유한소수인지 판별하기 위해서 분자는 필요하지않으므로 생성하지않았다.
유한소수는 분모의 소인수 (소수이면서 약수인 수)가 2 또는 5인 경우에만 가능하다.

while문을 통해 2, 5로 나누어 떨어지는 경우 각각의 수로 나누어주어 분모의 소인수가 2또는 5로만 구성되어있는지 확인해주도록 구현하였다.

0개의 댓글