title: "[프로그래머스] 수식 최대화 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/67257"
description: "프로그래머스 Level 2 문제 [수식 최대화]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

from re import split
from itertools import permutations

def solution(expression):
    # 연산자 우선 순위가 6종류밖에 안 되고, expression 길이도 짧습니다.
    # brute-force로 해결합니다.
    values = []
    
    for priority in permutations(['*', '+', '-'], 3):
        # 우선 연산자와 피연산자를 저장해두고,
        operands = list(map(int, split('[\\*\\+\\-]', expression)))
        operators = [c for c in expression if c in '*+-']
        
        # 우선순위대로 연산을 수행합니다.
        for op in priority:
            
            while op in operators:
                # i번째 연산자는 i번째 피연산자와 i+1번째 피연산자에 대한 연산을 수행합니다.
                i = operators.index(op)
                
                if op == '*':
                    v = operands[i] * operands[i+1]
                elif op == '+':
                    v = operands[i] + operands[i+1]
                else:
                    v = operands[i] - operands[i+1]
                
                # 피연산자 리스트를 업데이트 합니다.
                operands[i] = v
                operands.pop(i+1)
                # 연산자 리스트를 업데이트 합니다.
                operators.pop(i)
        
        values.append(operands[0])
        
    return max(abs(v) for v in values)

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges