
😎풀이
/ 혹은 +, -를 기준으로 각 수를 분리한다.
- 두 분수의 덧셈 공식을 활용한다.
2-1. ba+dc=bdad+bc
- 두 수의 최대 공약수를 계산하여 계산 결괏값이 너무 커지지 않도록 조절한다.
- 계산된 최종 분수를 반환한다.
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)
}