a/b + c/d를 계산시
ad + bc / bd 계산 후
ad+bc와 bd의 최대공약수를 구하여 나누면 기약분수로 표현할 수 있다
const gcd = (a, b) => {
return b === 0 ? a : gcd(b, a % b);
}
const addFractions = (frac1, frac2) => {
// 분수1: [분자, 분모]
const numerator1 = frac1[0];
const denominator1 = frac1[1];
// 분수2: [분자, 분모]
const numerator2 = frac2[0];
const denominator2 = frac2[1];
// 분자 계산: (분자1 * 분모2) + (분자2 * 분모1)
const resultNumerator = (numerator1 * denominator2) + (numerator2 * denominator1);
// 분모 계산: 분모1 * 분모2
const resultDenominator = denominator1 * denominator2;
// 최대공약수 계산
const commonDivisor = gcd(resultNumerator, resultDenominator);
// 기약분수로 변환하여 반환
return [resultNumerator / commonDivisor, resultDenominator / commonDivisor];
}