분수의 덧셈😀
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다.
두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
※ 제한 사항
0 <numer1, denom1, numer2, denom2 < 1,000
입출력
numer1 | denom1 | numer2 | denom2 | result |
---|---|---|---|---|
1 | 2 | 3 | 4 | [5, 4] |
9 | 2 | 1 | 3 | [29, 6] |
function solution(numer1, denom1, numer2, denom2) {
// 분자와 분모를 더함
var resultNumer = numer1 * denom2 + numer2 * denom1;
var resultDenom = denom1 * denom2;
// 최대공약수를 구하는 함수
function gcd(a, b) {
return b === 0 ? a : gcd(b, a % b);
}
// 최대공약수를 구하고 기약 분수로 만듦
var commonDivisor = gcd(resultNumer, resultDenom);
resultNumer /= commonDivisor;
resultDenom /= commonDivisor;
var answer = [resultNumer, resultDenom];
return answer;
}
resultNumer와 resultDenom 변수를 사용하여 두 분수의 합의 분자와 분모를 계산합니다.
이때, 분자는 각 분수의 분자를 서로 교차해서 곱한 뒤 더하고, 분모는 각 분수의 분모를 서로 곱한 값을 사용합니다.
gcd 함수는 최대공약수를 구하는 함수입니다. 이 함수는 재귀적으로 작성되어 있습니다. 최대공약수를 구하는 데에는 유클리드 호제법을 사용하였습니다.
최대공약수를 사용하여 resultNumer와 resultDenom을 나눠주고, 결과를 배열로 만들어 반환합니다. 이 배열은 순서대로 기약 분수의 분자와 분모를 포함하고 있습니다.
간단하게 말하면, 이 코드는 두 분수를 더한 후에 그 결과를 기약 분수로 만들어주는 함수입니다.