유한소수 판별하기

han.user();·2023년 4월 8일
0

프로그래머스

목록 보기
51/87
post-thumbnail

class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        int gcd = gcd(a, b); // a와 b의 최대공약수를 구합니다.
        int denominator = b / gcd; // 분모를 최대공약수로 나눈 값을 저장합니다.

        // 2와 5로 계속 나누어 나가면서 2와 5 이외의 소인수가 있는지 확인합니다.
        while (denominator % 2 == 0) denominator /= 2;
        while (denominator % 5 == 0) denominator /= 5;

        // 2와 5로만 이루어져 있으면 유한소수입니다.
        if (denominator == 1) answer = 1;
        // 그렇지 않으면 무한소수입니다.
        else answer = 2;

        return answer;
    }
    
    // 최대공약수를 구하는 함수입니다. (재귀함수로 구현)
    private int gcd(int a, int b) {
        if (b == 0) return a;
        return gcd(b, a % b);
    }
}
profile
I'm still hungry.

0개의 댓글