
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
처음에는 무한 if문을 활용해서 분모1, 분모2 가 같다면 분자들끼리만 더해주고
분모끼리 다르면 곱해서 분모를 만들고 분자를 상대 분모랑 곱하는 방식으로 해서 테스트해봤는데,, 안되었고
이렇게 하면 (1/2 + 4/1 일경우) 최대공약수를 못맞추기 때문에 이런문제는 최대공약수를 활용해야한다고 한다.
function solution(denum1, num1, denum2, num2) {
let denum = num1*denum2 + num2*denum1
// 분자를 구해준다.
let num = num1*num2
// 분모를 구해준다.
let maximum = 1
// 최대공약수를 구해준다
for(let i = 1 ; i <= topNum ; i ++) {
if(topNum%i === 0 && botNum%i === 0) {
maximum = i //같은걸로 나눴을때 동시에 나머지가 0 이되면 그게 최대 공약수
}
}
return [topNum/maximum, botNum/maximum]
// 분자와 분모에 최대공약수를 나눠서 약분해준다.
}
이거 0레벨인데 왜이렇게 어렵지?..