문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <denum1, num1, denum2, num2 < 1,000
입출력 예
denum1 | num1 | denum2 | num2 | 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 gcd(n1, n2) {
return n2 ? gcd(n2, n1 % n2) : n1;
}
function solution(denum1, num1, denum2, num2) {
let denum = denum1 * num2 + denum2 * num1;
let num = num1 * num2;
let divisor = gcd(denum, num);
return [denum / divisor, num / divisor];
}
기약분수는 나중에 생각하고 일단 통분해서 분수끼리의 덧셈을 해주었다.
그리고 그 다음에 기약분수로 만들어주었는데, 그 때는 분모와 분자의 최대공약수를 각각 분모, 분자에 나누어줘야 한다.
최대공약수 구하는 함수를 따로 빼주어서 구현하였다.
(gcd 함수 설명은 이전 포스팅에 설명한적 있으므로 밑에 참고해주시면 감사하겠습니다)
2021.08.01 - [PS/백준] - 백준 / 수학 / 2609번 / 최대공약수와 최소공배수 / C++
'PS > Programmers' 카테고리의 다른 글
Programmers / Level 0 / OX퀴즈 / JS (0) | 2022.10.26 |
---|---|
Programmers / Level 0 / 다항식 더하기 / JS (0) | 2022.10.24 |
Programmers / Level 0 / 안전지대 / JS (0) | 2022.10.24 |
Programmers / Level 0 / 겹치는 선분의 길이 / JS (0) | 2022.10.24 |