[Programmers] 분수의 덧셈

Joah·2022년 12월 1일
0

자료구조

목록 보기
9/11

문제

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


예시


풀이

// 풀지못함

다른 풀이

function solution(denum1, num1, denum2, num2) {
    let bunza = num1*denum2 + num2*denum1;
    let bunmo = num1*num2;
    let yackbun = 1;
    for(let i = 1 ; i <= bunmo ; i ++) {
        if(bunza%i === 0 && bunmo%i === 0) {
            yackbun = i
        }
    }
    return [bunza/yackbun, bunmo/yackbun]
}
  • 우선 처음부터 약분에 대해서 생각하지 않고 무조건 분모끼리, 분자끼리 곱한값을 더해 결과값을 얻는다.

  • 이후에 약분처리를 한다.

  • 1은 최소 약분 단위이기 때문에 yackbun의 초기값으로 설정한다.

  • i가 분자 또는 분모와 같아질 때까지 조건문을 돌려 i와 나눈 후 나머지 값이 0이 나온 최대값을 구한다.

  • 따라서 끝까지 약분할 수 있도록 기약분수가 될 때가지 i를 구한 후

  • 마지막에 해당 i를 각각의 분자와 분모에 나눈다.

profile
Front-end Developer

0개의 댓글