문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1
, num1
, 두 번째 분수의 분자와 분모를 뜻하는 denum2
, num2
가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
0 <denum1
, num1
, denum2
, num2
< 1,000
입출력 예
denum1 | num1 | denum2 | num2 | result |
---|---|---|---|---|
1 | 2 | 3 | 4 | [5, 4] |
9 | 2 | 1 | 3 | [29, 6] |
입출력 예 설명
입출력 예 #1
입출력 예 #2
내 풀이
import java.math.*;
class Solution {
public int[] solution(int denum1, int num1, int denum2, int num2) {
int[] answer = new int[2];
int denum = (denum1*num2) + (denum2*num1);
int num = num1 * num2;
BigInteger b1 = BigInteger.valueOf(denum);
BigInteger b2 = BigInteger.valueOf(num);
BigInteger b3 = b1.gcd(b2);
int gcd = b3.intValue();
answer[0] = denum/gcd;
answer[1] = num/gcd;
return answer;
}
}
BigInteger 클래스의 메서드
▶︎ gcd() : 최대공약수 찾기
▶︎ intValue() : int 타입으로 형 변환참고로 최소공배수는
최대공약수를 찾을 때 사용한 두 수를 곱하고 최대공약수로 나누어 주기만 하면 된다.
참고자료: 자바에서 최대공약수 찾기