[programmers] 분수의 덧셈 - JavaScript
주어진 두 분수를 더한 후 기약 분수로 나타내기 위해 분자와 분모를 계산하는 문제입니다. 분자와 분모의 최대 공약수를 구하는 방법과 재귀함수를 활용하는 방법을 익힐 수 있었습니다.
Jan 01, 2024
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는
numer1
, denom1
, 두 번째 분수의 분자와 분모를 뜻하는 numer2
, denom2
가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.제한사항
- 0 <
numer1
,denom1
,numer2
,denom2
< 1,000
입출력 예
numer1 | denom1 | numer2 | 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 합니다.
solution.js
function cal_gcd(a, b) { return a % b === 0 ? b : cal_gcd(b, a % b) } function solution(denum1, num1, denum2, num2) { let denum = denum1 * num2 + denum2 * num1; let num = num1 * num2; let gcd = cal_gcd(denum, num); return [denum / gcd, num / gcd]; }
핵심 키워드
- 분수를 계산하는 방법은 분모를 먼저 계산하는 것이다. 먼저 각각의 분모를 곱해서 분모를 만든다. 그 후 각각의 분자에 더하고자 하는 분모의 값을 곱한 후 서로 더해서 분자를 만든다. 마지막으로 분모와 분자의 최대 공약수를 구해서 나누면 기약분수가 만들어진다.
- 분자와 분모의 최대공약수를 구하는 방법은 다음과 같다. 분자를 분모로 나눈 나머지가 0이라면 분모가 최대 공약수가 된다. 만약 아니라면, 나머지가 0이 될 때까지 분자를 분모로 나는 값으로 분모를 나눈다.
- 해당 기능을 구현하기 위해 재귀함수를 사용한다.
결론!
해당 문제를 풀면서 기존에 알고 있던 수학 공식을 직접 코드로 풀어 쓰는 방법을 익힐 수 있었다. 또한 재귀함수의 활용법도 이해할 수 있었다.
Share article