알고리즘 풀이/백준
[백준 1735] 분수합 (Java)
char_lie
2023. 6. 14. 21:04
반응형
https://www.acmicpc.net/problem/1735
1735번: 분수 합
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
www.acmicpc.net
분수합 문제
두 분수의 합을 기약분수의 형태로 구하는 문제
#사용 알고리즘
수학
📌문제 접근 포인트
1. 단순 분수의 합을 구하는 방법은 A/B + C/D 라고 하면 A*D + B*C / B*D 이다.
2. 기약 분수로 나타내야 한다는 것은 두 수의 최대 공약수로 나누어야 한다는 뜻이다. 두 수의 최대 공약수를 구할 수 있도록 함수를 구성하자.
3. 각 분자와 분수를 최대 공약수로 나누면 해결!
⚙ 내가 푼 정답 코드
public class Main {
public static int GCD(int a, int b) {
if (a % b == 0) {
return b;
}
return GCD(b, a%b);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine()," ");
int C = Integer.parseInt(st.nextToken());
int D = Integer.parseInt(st.nextToken());
int numerator = A*D+B*C;
int denominator = B*D;
int gcd = GCD(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
System.out.println(numerator + " " + denominator);
}
}
반응형