알고리즘/프로그래머스

(파이썬) 프로그래머스 - 수식 최대화

소갱 2021. 10. 20. 13:57
import copy
def solution(expression):
    ordinary = [['*','+','-'],['*','-','+'],['+','*','-'],['+','-','*'],['-','*','+'],['-','+','*']]
    check = []
    now = ""
    for i in expression:
        if i == '*' or i == '-' or i== '+':
            if now == "0":
                check.append(0)
            else:
                check.append(int(now))
            now = ""
            check.append(i)
        else:
            now += i
    if now == "0":
        check.append(0)
    else:
        check.append(int(now))

    mx = 0
    for i in ordinary:
        array = copy.deepcopy(check)
        for j in range(3):
            for k in range(0,len(array)-1):
                if array[k] == i[j]:
                    if array[k] == '*':
                        array[k+1] *= array[k-1]
                    elif array[k] == '+':
                        array[k+1] += array[k-1]
                    elif array[k] == '-':
                        array[k+1] = array[k-1] - array[k+1]
                    array[k] = -1
                    array[k-1] = -1
            a = []
            for k in array:
                if k != -1:
                    a.append(k)
            array = copy.deepcopy(a)
        mx = max(mx,abs(array[0]))            
    answer = mx
    return answer

문자열에서 0을 분리하는 것을 신경만 써준다면 무난하게 풀 수 있다. (예시에 나온대로 구현)