프로그래머스 문제풀이/Level 0

분수의 덧셈 (자바, Java)

뮤츠 2022. 11. 26. 23:24

유클리드 호제법을 이용해서 최대공약수로 나눠 기약분수로 표현해주면 된다.

예전에 백준에서 거의 똑같은 문제를 본 기억이 난다.

 

class Solution {
    public int[] solution(int denum1, int num1, int denum2, int num2) {
        int[] answer = {};
        answer = new int[2];
        int a = denum1*num2 + denum2*num1;
        int b = num1 * num2;
        if (a>=b) {
            answer[0] = a/gcd(b, a);
            answer[1] = b/gcd(b, a);
        } else {
            answer[0] = a/gcd(a, b);
            answer[1] = b/gcd(a, b);
        }
        
        return answer;
    }
    
    public int gcd(int a, int b) {
        while (a!=0) {
            int temp = a;
            a = b%a;
            b = temp;
        }
        return b;
    }
}