euphoriaO-O

[Python][프로그래머스] 수식 최대화 본문

Programming/Algorithm

[Python][프로그래머스] 수식 최대화

euphoria0-0 2020. 7. 11. 15:13

#2020카카오인턴십 문제

from re import split
from itertools import permutations
lst = permutations(['*','+','-']) # 연산자 순열

def solution(expression):
    answer = 0
    for l in lst:
        num = split('[*+-]',expression) # 숫자 배열
        opr = split('[0-9]+',expression)[1:-1] # 연산자 배열
        # stack을 이용해 우선 연산자 계산
        for x in l[:2]:
            while x in opr:
                idx = opr.index(x)
                tmp = num[idx]+opr[idx]+num[idx+1]
                num[idx] = str(eval(tmp))
                num.pop(idx+1)
                opr.pop(idx)
        # 마지막 계산
        tmp = ''
        for i in range(len(opr)):
            tmp += num[i] + opr[i]
        tmp = abs(eval(tmp + num[-1]))
        # 최종 값(절댓값)이 가장 큰 것을 찾음
        if tmp > answer:
            answer = tmp
    return answer
Comments