본문 바로가기

Java/코딩테스트

[java/프로그래머스/120808] 분수의 덧셈 (gcd, lcm)

✏️ 문제 설명

첫 번째 분수의 분자와 분모를 뜻하는 numer1denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.


✏️ code

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int numer = numer1 * denom2 + numer2 * denom1;
        int denom = denom1 * denom2;
        int gcd = gcd(numer, denom);
        return new int[]{numer/gcd, denom/gcd};
    }
    
    private int gcd(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        } return a;
    }
}

 

🖥️ 최대공약수(gcd), 최소공배수(lcm)
📌 gcd
private int gcd (int a, int b) {
            while (b != 0) {
                      int temp = b;
                      b = a % b;
                      a = temp;
            }
             return a;
}

📌 lcm
private int lcm (int a, int b) {
            return a*b / gcd(a, b);
}

 

반응형