[programmers] 분수의 덧셈 - JavaScript

주어진 두 분수를 더한 후 기약 분수로 나타내기 위해 분자와 분모를 계산하는 문제입니다. 분자와 분모의 최대 공약수를 구하는 방법과 재귀함수를 활용하는 방법을 익힐 수 있었습니다.
Jan 01, 2024
[programmers] 분수의 덧셈 - JavaScript

문제 설명

첫 번째 분수의 분자와 분모를 뜻하는 numer1denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 0 <numer1denom1numer2denom2 < 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

👨🏻‍💻DriedPollack's Blog