[알고리즘/프로그래머스] - 수식 최대화(python)

유현민·2022년 6월 8일
0

알고리즘

목록 보기
201/253
post-custom-banner

문제

  1. 처음 수식을 분리.
  2. deque로 만들기
  3. permutations를 이용하여 연산자 조합하기
  4. 큐를 이용하여 연산하기
  5. 분리했던 연산에서 해당하는 연산자가 나오면 s에 넣었던 가장 마지막 숫자와 현재 k 안에 있는 숫자를 연산해서 s에 넣는다.
from collections import deque
from itertools import permutations
import copy


def operator(a, b, op):
    if op == '+':
        return a + b
    elif op == '-':
        return a - b
    else:
        return a * b


def cal(k, op):
    for o in op:
        s = deque()
        while k:
            tmp = k.popleft()
            if tmp == o:
                s.append(operator(s.pop(), k.popleft(), o))
            else:
                s.append(tmp)
        k = s
    return abs(k[0])


def solution(expression):
    result = 0
    op = ['*', '-', '+']
    a = list()
    n = ''
    for i in expression:
        if i in op:
            a.append(int(n))
            a.append(i)
            n = ''
        else:
            n += i

    a.append(int(n))

    a = deque(a)

    for i in permutations(op, 3):
        k = copy.deepcopy(a)
        result = max(result, cal(k, i))
    return result
profile
smilegate
post-custom-banner

0개의 댓글