[Programmers] - 수식 최대화 (Level 2)
2020 KAKAO 인턴십
LEVEL : 2
문제링크
Tip:
- 정규표현식을 이용하여 풀이를 해보려 했지만, sub에서 replace하는 과정에서 여러 오류가 생겨서 포기 (음수값 대입 등)
- list split을 잘 활용하여 차순위 연산자부터 계산 후 병합하는 방식으로 충분히 풀이 가능
- Complex is better than complicated..
expression = "100-200*300-500+20"
def solution(expression):
from itertools import permutations
priority = [i for i in permutations(["+","-","*"])]
answer = []
for i in priority:
first = expression.split(i[0])
second = [t.split(i[1]) for t in first]
eval_third = []
for s in second:
tmp = [str(eval(t)) for t in s]
eval_third.append(i[1].join(tmp))
eval_second = [str(eval(t)) for t in eval_third]
answer.append(abs(eval(i[0].join(eval_second))))
return max(answer)
solution(expression)
60420
Comments