프로그래머스-분수의 덧셈

Main·2023년 3월 7일
0

코딩테스트

목록 보기
8/17

✅ 문제 설명

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

❗ 제한사항

  • 0 <numer1, denom1, numer2, denom2 < 1,000

✔ 입출력 예

number1denom1number2denom2result
1234[5, 4]
9213[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;
}

출처 https://school.programmers.co.kr/learn/challenges

profile
함께 개선하는 개발자

0개의 댓글

관련 채용 정보