
😎풀이
=을 기준으로 각 변 분리
- 분리된 각 변에서 X와 정수의 합 계산
- 좌측 변에 X의 합을 계산하고 우측 변에 정수의 합 계산
- X가 0인 경우, 정수도 0이라면 무한 그렇지 않은 경우 해가 없음
- x가 1일 경우의 정수 반환
function solveEquation(equation: string): string {
const [left, right] = equation.split("=")
const [leftX, leftNum] = evaluate(left)
const [rightX, rightNum] = evaluate(right)
const x = leftX - rightX
const num = rightNum - leftNum
if(x === 0) {
return num === 0 ? 'Infinite solutions' : 'No solution'
}
return `x=${num / x}`
};
function evaluate(str: string) {
let x = 0
let num = 0
const each = str.match(/[+-]?[^+-]+/g) ?? []
for(const item of each) {
if(item.includes('x')) {
if(item === 'x' || item === '+x') {
x++
} else if(item === '-x') {
x--
} else {
const xNum = item.replace('x', '')
x += Number(xNum)
}
} else {
num += Number(item)
}
}
return [x, num]
}