본문 바로가기
코딩/백준-자바

[자바] 1735번: 분수 합

by 철없는민물장어 2023. 1. 30.
728x90
반응형

https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.

www.acmicpc.net

 

분수의 분자,분모를 각각 따로 변수에 저장하고

두 분수를 합한 값도 분자,분모를 따로 변수에 저장 해 둔다.

 

그리고 반복문을 이용해서 분자,분모를 나누어 줄 것인데,

for반복문을 이용, 2부터 시작해서 

분자,분모가 모두 나누어 떨어지는 경우에는 

나눌 수 있는 만큼 while문을 이용하여 모두 나누어주면 된다.

 

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

public class P1735 {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st = new StringTokenizer(br.readLine());

		int a_top = Integer.parseInt(st.nextToken());
		int a_bottom = Integer.parseInt(st.nextToken());
		st = new StringTokenizer(br.readLine());

		int b_top = Integer.parseInt(st.nextToken());
		int b_bottom = Integer.parseInt(st.nextToken());

		int c_top = (a_top * b_bottom) + (b_top * a_bottom);

		int c_bottom = a_bottom * b_bottom;

		for (int i = 2; i <= (c_top < c_bottom ? c_top : c_bottom); i++) {
			// i는 c의 분자,분모 중 더 작은숫자까지 증가

			while (c_top % i == 0 && c_bottom % i == 0) {
				c_top /= i;
				c_bottom /= i;
			}
		}

		System.out.println(c_top + " " + c_bottom);
	}

}
728x90
반응형

댓글