[Programmers] 코딩테스트 입문 120878. 유한소수 판별하기

이지현·2023년 3월 27일
0

Algorithm

목록 보기
69/81
post-thumbnail

✔️ Problem URL

유한소수 판별하기


✔️ Problem

소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요.


✔️ Code

💡 다음 조건을 만족하는 분수만 유한소수가 될 수 있다.

  • 기약분수로 나타내었을 때 분모의 소인수가 2와 5만 존재해야 한다.
class Solution {
    public int solution(int a, int b) {
        int B = b / lcm(a, b);

        while (B != 1) {
            if (B % 2 == 0) {
                B /= 2;
            } else if (B % 5 == 0) {
                B /= 5;
            } else {
                return 2;
            }
        }
        return 1;
    }

    private int lcm(int a, int b) {
        if (b == 0) {
            return a;
        } else {
            return lcm(b, a % b);
        }
    }
}
profile
2023.09 ~ 티스토리 이전 / 2024.04 ~ 깃허브 블로그 이전

0개의 댓글