😎풀이

  1. =을 기준으로 각 변 분리
  2. 분리된 각 변에서 X와 정수의 합 계산
  3. 좌측 변에 X의 합을 계산하고 우측 변에 정수의 합 계산
  4. X가 0인 경우, 정수도 0이라면 무한 그렇지 않은 경우 해가 없음
  5. 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]
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글