
문제 해석
- 두개의 분수를 입력받는데, 첫번째 줄에는 첫번째 분수의 분자(A)와 분모(B)를 입력받고, 두번째 줄에는 두번째 분수의 분자(A)와 분모(B)을 입력받는다.
- 두개의 분수를 모두 입력 받았다면 두 분수의 합을 구하면 되는데, 합한 분수의 형태는 기약분수(분모와 분자의 공약수가 1뿐인 분수, 더 이상 약분할 수 없는 형태)여야 한다.
코드
import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int[] aArray = new int[2]; 
        int[] bArray = new int[2]; 
        for(int i = 0; i < 2; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            aArray[i] = Integer.parseInt(st.nextToken());
            bArray[i] = Integer.parseInt(st.nextToken());
        }
        
        int commonB = bArray[0] * bArray[1] / findGCD(bArray[0], bArray[1]);
        
        int addA = aArray[0]*(commonB/bArray[0]) + aArray[1]*(commonB/bArray[1]);
        int abbreviation = findGCD(commonB, addA); 
        if(abbreviation != 1){ 
            commonB = commonB/abbreviation;
            addA = addA/abbreviation;
        }
        bw.write(addA + " " +  commonB);
        br.close();
        bw.flush();
        bw.close();
    }
    
    static int findGCD(int b1, int b2){
        while(b2 != 0){
            int R = b1%b2;
            b1 = b2;
            b2 = R;
        }
        return b1;
    }
}
결과

느낀 점
- 전 포스트와 전전 포스트에서 했던 공약수 관련 문제를 하고나서인지 이번 문제는 큰 어려움 없이 해결할 수 있었다.