permutations
라이브러리를 이용해, 수학 기호 경우의 수를 모두 구한다.- 먼저 문자열에서 숫자와
*
,-
,+
를 분리한다.- 현재 나온 수학 기호를 통해 계산을 하는데, 파이썬에서는 문자열에서도 숫자와 수학기호가 같이 있을 때는 eval 함수를 통해 계산이 가능하다. (
eval('1'+ '+' + '2')
)
소스를 보면 쉽게 이해가 될 것이다!
from itertools import permutations
def solution(expression):
answer = 0
oper = ['*', '+', '-']
for perm in permutations(oper, 3):
per = list(perm)
temp = []
emp = ''
for i in range(len(expression)):
# 숫자와 수학 기호를 분리한다.
if str('0') <= expression[i] <= str('9'):
emp += expression[i]
else:
temp.append(emp)
temp.append(expression[i])
emp = ''
if i == (len(expression) - 1):
temp.append(emp)
emp = ''
# 수학 기호를 돌리면서
for p in perm:
i = 0
while i < len(temp):
if p == temp[i]:
temp[i - 1] = eval(str(temp[i - 1]) + temp[i] + str(temp[i + 1]))
# 수학 기호 삭제
del temp[i]
if i < len(temp):
# 원래는 temp[i+1]인 숫자를 삭제 (위에서 del 한 번 했으므로, i번째를 삭제)
del temp[i]
else:
i += 1
answer = max(answer, abs(temp[0]))
return answer