https://school.programmers.co.kr/learn/courses/30/lessons/67257
python의 포인트 되는 함수들에 대한 정리 필요
문제 풀이에 대한 접근이 가능
import operator
from itertools import permutations
def solution(exp):
ops = { "+": operator.add, "-": operator.sub, "*": operator.mul } # etc.
answer = 0
num = []
op = []
n = ''
for e in exp:
if e in list((ops.keys())):
num.append(int(n))
op.append(e)
n = ''
else:
n += e
num.append(int(n))
#우선 순위 높은 순서대로 괄호를 쓴다
opl = list(ops.keys())
opp = list(permutations(opl, 3))
ans_list = []
for p in opp:
# print(p)
# 값 초기화, op 초기화
ans = 0
cop = op.copy()
cnum = num.copy()
for i in range(3):
while p[i] in cop:
# 여기서 계산 진행하고 값 넣고
idx = cop.index(p[i])
res = ops[p[i]](cnum[idx], cnum[idx+1])
ans += res
cop.remove(p[i])
del cnum[idx:idx+2]
cnum.insert(idx, res)
# 여기서 절대값 쓰고 ans_list에 추가
ans = res
ans_list.append(abs(ans))
answer = sorted(ans_list)
answer = answer[-1]
return answer
def solution(expression):
operations = [('+', '-', '*'),('+', '*', '-'),('-', '+', '*'),('-', '*', '+'),('*', '+', '-'),('*', '-', '+')]
answer = []
for op in operations:
a = op[0]
b = op[1]
temp_list = []
for e in expression.split(a):
temp = [f"({i})" for i in e.split(b)]
temp_list.append(f'({b.join(temp)})')
answer.append(abs(eval(a.join(temp_list))))
return max(answer)
import re
from itertools import permutations
def solution(expression):
#1
op = [x for x in ['*','+','-'] if x in expression]
op = [list(y) for y in permutations(op)]
ex = re.split(r'(\D)',expression)
#2
a = []
for x in op:
_ex = ex[:]
for y in x:
while y in _ex:
tmp = _ex.index(y)
_ex[tmp-1] = str(eval(_ex[tmp-1]+_ex[tmp]+_ex[tmp+1]))
_ex = _ex[:tmp]+_ex[tmp+2:]
a.append(_ex[-1])
#3
return max(abs(int(x)) for x in a)