반응형
문제 (분수의 덧셈)
일반 분수의 덧셈처럼 구해봤지만 최대공약수를 구하지 못해 많이 헤매었었다.
이 문제의 요점은 최대공약수를 구할 수 있냐 없냐에 달린 것 같다.
최대공약수 구하는 방법
function fnGCD(a, b){
return a % b? fnGCD(b, a % b) : b;
}
재귀함수를 이용하여 최대공약수를 구한다.
결론
function solution(num1, denom1, num2, denom2) {
function fnGCD(a, b){ // 최대공약수
return (a % b)? fnGCD(b, a % b) : b;
}
const top = num1 * denom2 + num2 * denom1; // 분자
const bottom = denom1 * denom2; // 분모
let gcd = fnGCD(top, bottom);
const result = [top/gcd, bottom/gcd]; // 최대공약수로 나눈다
return result;
}
반응형