[LeetCode] 592. Fraction Addition and Subtraction

Chobby·2026년 4월 20일

LeetCode

목록 보기
1065/1065

😎풀이

  1. / 혹은 +, -를 기준으로 각 수를 분리한다.
  2. 두 분수의 덧셈 공식을 활용한다.
    2-1. ab+cd=ad+bcbd\frac{a}{b} + \frac{c}{d} = \frac{ad + bc}{bd}
  3. 두 수의 최대 공약수를 계산하여 계산 결괏값이 너무 커지지 않도록 조절한다.
  4. 계산된 최종 분수를 반환한다.
function fractionAddition(expression: string): string {
    const splitted = expression.split(/\/|(?=[-+])/gi)
    let resDeno = 1
    let resNum = 0
    for(let i = 0; i < splitted.length; i += 2) {
        const nextNum = Number(splitted[i])
        const nextDeno = Number(splitted[i + 1])
        resNum = resNum * nextDeno + nextNum * resDeno
        resDeno = resDeno * nextDeno
        const gcd = getGCD(resNum, resDeno)
        resNum /= gcd
        resDeno /= gcd
    }
    return `${resNum}/${resDeno}`
};

function getGCD(a: number, b: number) {
    if(b === 0) return Math.abs(a)
    return getGCD(b, a % b)
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글