符号化試験式の最大化問題を解く
プログラマ式の最大化(level 2)回答
まず,この問題をeval文字列に変換して演算する関数を発見し,これはよい.
問題では、各優先演算記号を()で囲み、evalを使えばいいのですが、手間がかかります.
それでも意味があって良い関数を見つけた.
from itertools import permutations
def solution(express):
v = ['*','+','-']
base = list(permutations(v,3))
m = 0
for data in base:
expression = express[:]
expression = expression.split(data[0])
for j in range(len(expression)):
expression[j] = list(map(eval, expression[j].split(data[1])))
for i in range(len(expression)):
result1 = expression[i][0]
for j in range(1, len(expression[i])):
if data[1] == '+':
result1 += expression[i][j]
if data[1] == '-':
result1 -= expression[i][j]
if data[1] == '*':
result1 *= expression[i][j]
expression[i] = result1
result2 = expression[0]
for i in range(1, len(expression)):
if data[0] == '*':
result2 *= expression[i]
if data[0] == '+':
result2 += expression[i]
if data[0] == '-':
result2 -= expression[i]
m = max(m, abs(result2))
return m
私の解答は公式最大化ではなく、随意に最大化まで解答し、説明もよく分からないので、この解答は繰り返しの文で計算されたものと解釈できます.まず,この問題をeval文字列に変換して演算する関数を発見し,これはよい.
問題では、各優先演算記号を()で囲み、evalを使えばいいのですが、手間がかかります.
それでも意味があって良い関数を見つけた.
Reference
この問題について(符号化試験式の最大化問題を解く), 我々は、より多くの情報をここで見つけました https://velog.io/@kokodak/코딩테스트-수식-최대화-문제풀이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol