1) 첫 번째 분수의 분자 numer1
2) 첫 번째 분수의 분모 denom1
3) 두 번째 분수의 분자 numer2
4) 첫 번째 분수의 분모 denom2
두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
0 <numer1, denom1, numer2, denom2 < 1,000
분모는 분모끼리 곱한 것을 넣고,
분자는 다른 분모와 각각 곱해서 더한 것을 넣으면 된다.
ex) 1/2 + 2/3 = (1 * 3) + (2 * 2) / (2 * 3) = 7 / 6
기약분수란?
분자와 분모의 공약수가 1뿐이어서 더이상 약분되지 않는 분수
ex) 1/3, 4/7
기약분수로 만드려면 분자와 분모를 최소 공배수로 나누면 된다.
결과값을 배열에 담으면 끝
const solution = (numer1, denom1, numer2, denom2) => {
// 분자
// (분자1 * 분모2) + (분자2 * 분모1)
let topNum = numer1 * denom2 + numer2 * denom1;
// 분모
// (분모1 * 분모2)
let botNum = denom1 * denom2;
// 최소 공배수
let maximum = 1;
// 약분
// i는 1부터 시작해서 분자의 값과 같아질 때까지 1씩 증가한다
// 분자를 i로 나눠서 나머지가 없고, 분모를 i로 나눠서 나머지가 없을 때 최소 공배수에 i값을 넣는다.
for(let i = 1; i <= botNum; i++) {
if(topNum % i === 0 && botNum % i === 0) {
maximum = i;
}
}
// 분모와 분자를 최소공배수로 나눈 값들을 배열에 담아 리턴한다.
return [topNum / maximum, botNum / maximum];
}