배고픈 개발자 이야기

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

알고리즘 문제/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)

'알고리즘 문제 > PROGRAMMERS' 카테고리의 다른 글

[2020 kakao blind] 괄호변환  (0) 2021.08.12
[2018 kakao blind] 뉴스클러스터링  (0) 2021.08.10
[2018 kakao blind] 다트게임  (0) 2021.08.01
[2018 kakao blind] 비밀지도  (0) 2021.08.01
[2019 kakao blind] 실패율  (0) 2021.07.31
Comments