알고리즘

[백준, 자바, 1735번] 분수 합

hminor 2024. 11. 12. 16:24
반응형

풀이

  • 해당 문제에선 고민이 되었던 것은
  • 분자가 분모보다 값이 큰 것까지 고려해야할 까? 였는데
  • 우선 거기까지는 생각하지 말고 해결해보자는 마음으로 해결했음.
  • 우선 분모의 최대공약수를 찾고 그에 따라
  • 각 분수의 분자를 곱해준 뒤,
  • 합한 분수의 분자와 분모에 대한 GCD를 계속 구하면서
  • 1이 나올때까지 반복하여 기약분수로 만들어주면서 해결.

 

import java.util.Scanner;

public class _1735 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a1 = sc.nextInt();
        int a2 = sc.nextInt();
        int b1 = sc.nextInt();
        int b2 = sc.nextInt();
        int gcd = GCD(a2,b2);
        a1 = a1*(b2/gcd);
        b1 = b1*(a2/gcd);
        int x = a1+b1;
        int y = a2*(b2/gcd);
        while (true) {
            gcd = GCD(x,y);
            if (gcd==1) break;
            else {
                x/=gcd;
                y/=gcd;
            }
        }
        System.out.printf("%d %d",x,y);
    }
    public static int GCD(int x, int y) {
        while (y!=0) {
            int tmp = y;
            y = x%y;
            x = tmp;
        }
        return x;
    }
}