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