개발자 미니민의 개발스터디

[백준 JAVA] 1735번 풀이 - 분수 합

by mini_min

 

package quiz;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

/**
 * 분수 합
 * - 분서 a/b는 분자가 a, 분모가 b인 분수이다. (a,b는 모두 자연수)
 * - 두 분수의 합 또한 분수로 표현할 수 있다.
 * - 두 분수가 주어졌을 때, 그 합을 기약 분수의 형태로 구하는 프로그램을 작성하시오.
 * (기약분수 : 더 이상 약분되지 않는 분수를 의미한다.)
 *
 * 출력 : 첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 두고 출력한다.
 */
public class _1735 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int a_1 = Integer.parseInt(st.nextToken()); //2
        int b_1 = Integer.parseInt(st.nextToken()); //7

        st = new StringTokenizer(br.readLine());
        int a_2 = Integer.parseInt(st.nextToken()); //3
        int b_2 = Integer.parseInt(st.nextToken()); //5

        //분수 계산.
        int new_a = (a_1 * b_2)+(a_2 * b_1); //새 분수
        int new_b = b_1 * b_2;

        //기약분수 확인하기 -> 최대공약수가 1이 아닌 경우, 기약분수가 아님
        int new_yaksu = gcd(new_a, new_b);

        System.out.print(new_a/new_yaksu + " " + new_b/new_yaksu);
    }

    private static int gcd(int a, int b){
        while(b!=0){
            int r = a%b;
            a = b;
            b = r;
        }
        return a;
    }

}

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기