알고리즘 문제/PROGRAMMERS

[2021 카카오 인턴] 수식 최대화

이융희 2021. 8. 7. 12:41
728x90

 

나중에

 

# "100-200*300-500+20" 60420
import copy

def calculate(prior, tokenizes):
  tokenize = copy.deepcopy(tokenizes)
  for queue in prior:
    i = 1
    while queue in tokenize:
      if tokenize[i] == queue:
        num = 0
        if queue == "+":
          num = tokenize[i-1] + tokenize[i+1]
        elif queue == "-":
          num = tokenize[i-1] - tokenize[i+1]
        else:
          num = tokenize[i-1] * tokenize[i+1]

        del tokenize[i+1]
        del tokenize[i]
        tokenize[i-1] = num
        print(i, tokenize)
        # toenize resize
        i = 1
      else: 
        i += 2
  if tokenize[0] < 0:
    return -tokenize[0]
  return tokenize[0]

def solution(expression):
  answer_list = []
  priors = []
  priors.append(["+", "-", "*"])
  priors.append(["+", "*", "-"])
  priors.append(["-", "+", "*"])
  priors.append(["-", "*", "+"])
  priors.append(["*", "-", "+"])
  priors.append(["*", "+", "-"])

  tokenize, temp = [], ""
  for token in expression:
    if token in ["+", "-", "*"]:
      tokenize.append(int(temp))
      tokenize.append(token)
      temp = ""
    else:
      temp += token
  tokenize.append(int(temp))

  for prior in priors:
    answer_list.append(calculate(prior, tokenize))

  return max(answer_list)