[프로그래머스] 코딩테스트 입문 > 분수의 덧셈

82.831·2023년 1월 14일
0
post-thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/120808

🔊 문제 설명

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

  • 기약분수란 더 이상 약분되지 않는 분수를 의미한다.
  • 기약분수로 나타내야 하기 때문에 분자 분모를 두 수의 최대공약수로 나누어 주어야 한다. ➡️ 최대공약수를 구하는 로직이 필요하다.

👩‍💻 나의 풀이

function solution(numer1, denom1, numer2, denom2) {
  const denom = (denom2 * numer1) + (denom1 * numer2);
  const numer = denom1 * denom2;
    
  const getGCD = (a, b) => (b === 0 ? a : getGCD(b, a % b));
    
  const gcd = getGCD(denom, numer);
    
  return [denom / gcd, numer / gcd];
}

0개의 댓글