Minimize Result by Adding Parentheses to Expression

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
    def minimizeResult(self, expression: str) -> str:
        plus = expression.index('+')
        v = []
        lp, rp = [], []
        l = int(expression[:plus])
        mul = 10
        while l * 10 >= mul:
            lp.append((l // mul, l % mul))
            mul *= 10
        r = int(expression[plus + 1:])
        mul = 1
        while r // mul > 0:
            rp.append((r % mul, r // mul))
            mul *= 10
        for m1, s1 in lp:
            for m2, s2 in rp:
                if not v or max(1, m1) * (s1 + s2) * max(1, m2) < max(1, v[0]) * (v[1] + v[2]) * max(1, v[3]):
                    v = [m1, s1, s2, m2]
        return (str(v[0]) if v[0] else "") + "(" + str(v[1]) + "+" + str(v[2]) + ")" + (str(v[3]) if v[3] else "")