[백준 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;
}
}
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 4134번 풀이 - 다음 소수 (0) | 2023.09.06 |
---|---|
[백준 JAVA] 2485번 풀이 - 가로수 🌟 (0) | 2023.09.03 |
[백준 JAVA] 1934번/13241번 풀이 - 최소공배수 (1) | 2023.08.31 |
[백준 JAVA] 2798 번 풀이 - 블랙잭 (1) | 2023.08.27 |
[백준 JAVA] 11478번 풀이 - 서로 다른 부분 문자열의 개수 (0) | 2023.08.26 |
블로그의 정보
개발자 미니민의 개발로그
mini_min