Lv2 - 수식 최대화

LeeKyoungChang·2022년 4월 30일
0

Algorithm

목록 보기
188/203
post-thumbnail

📚 Lv2 - 수식 최대화

수식 최대화

 

이해

  • permutations 라이브러리를 이용해, 수학 기호 경우의 수를 모두 구한다.
  • 먼저 문자열에서 숫자와 *, -, +를 분리한다.
  • 현재 나온 수학 기호를 통해 계산을 하는데, 파이썬에서는 문자열에서도 숫자와 수학기호가 같이 있을 때는 eval 함수를 통해 계산이 가능하다. (eval('1'+ '+' + '2'))

소스를 보면 쉽게 이해가 될 것이다!

 

소스

from itertools import permutations  
  
  
def solution(expression):  
    answer = 0  
  
    oper = ['*', '+', '-']  
  
    for perm in permutations(oper, 3):  
        per = list(perm)  
        temp = []  
        emp = ''  
        for i in range(len(expression)):  
            # 숫자와 수학 기호를 분리한다.  
            if str('0') <= expression[i] <= str('9'):  
                emp += expression[i]  
            else:  
                temp.append(emp)  
                temp.append(expression[i])  
                emp = ''  
  
            if i == (len(expression) - 1):  
                temp.append(emp)  
                emp = ''  
  
        # 수학 기호를 돌리면서  
        for p in perm:  
            i = 0  
            while i < len(temp):  
                if p == temp[i]:  
                    temp[i - 1] = eval(str(temp[i - 1]) + temp[i] + str(temp[i + 1]))  
  
                    # 수학 기호 삭제  
                    del temp[i]  
                    if i < len(temp):  
                        # 원래는 temp[i+1]인 숫자를 삭제 (위에서 del 한 번 했으므로, i번째를 삭제)  
                        del temp[i]  
                else:  
                    i += 1  
        answer = max(answer, abs(temp[0]))  
  
    return answer
스크린샷 2022-05-01 오전 12 22 05

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글