이 문제를 통해 파이썬의 정규표현식에 대해 조금 알게되었다.
import re
from itertools import permutations
def solution(expression):
expression = re.split('([-+*])', expression)
operators = list(permutations(['-', '+', '*'], 3))
result = []
for operator in operators:
exp = expression[:]
for op in operator:
while op in exp:
idx = exp.index(op)
exp[idx-1] = str(eval(exp[idx-1] + op + exp[idx+1]))
del exp[idx:idx+2]
result.append(abs(int(exp[0])))
return max(result)
expression = re.split('([-+*])', expression)
--> ['100', '-', '200', '*', '300', '-', '500', '+', '20']
eval()
: 문자열을 수식 그대로 계산해준다.
ex) "200+300" 은 문자열이지만 200+300 = 500을 결과로 낸다.