첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
- 0 <
numer1, denom1, numer2, denom2
< 1,000
number1 denom1 number2 denom2 result 1 2 3 4 [5, 4] 9 2 1 3 [29, 6]
입출력 예 #1
- 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
입출력 예 #2
- 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
- 통분을 통해 분모와 분자의 값을 각각 구함
- 유클리드 호제법을 통해 분자 분모의 최대공약수를 구함
- 분자와 분모의 최대공약수를 구하여 분자와 분모에 나눠주어 약분을 함
- 약분한 값을 정답 배열에 넣어줌
- 유클리드 호제법 : 두 수가 서로 상대방 수를 나누어 결국 원하는 수를 얻는 알고리즘
function solution(numer1, denom1, numer2, denom2) { var answer = []; const a = numer1*denom2 + numer2*denom1 const b = denom1*denom2; const gcd = (a,b) => (a%b===0 ? b : gcd(b,a%b)); const d = gcd(a,b); answer.push(a/d); answer.push(b/d); return answer; }