첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
// 풀지못함
function solution(denum1, num1, denum2, num2) {
let bunza = num1*denum2 + num2*denum1;
let bunmo = num1*num2;
let yackbun = 1;
for(let i = 1 ; i <= bunmo ; i ++) {
if(bunza%i === 0 && bunmo%i === 0) {
yackbun = i
}
}
return [bunza/yackbun, bunmo/yackbun]
}
우선 처음부터 약분에 대해서 생각하지 않고 무조건 분모끼리, 분자끼리 곱한값을 더해 결과값을 얻는다.
이후에 약분처리를 한다.
1은 최소 약분 단위이기 때문에 yackbun의 초기값으로 설정한다.
i가 분자 또는 분모와 같아질 때까지 조건문을 돌려 i와 나눈 후 나머지 값이 0이 나온 최대값을 구한다.
따라서 끝까지 약분할 수 있도록 기약분수가 될 때가지 i를 구한 후
마지막에 해당 i를 각각의 분자와 분모에 나눈다.