[プログラマー]最大化式(Python)
質問する
式の最大化
問題の説明
これは、式のすべての優先度を求め、式の最大値を代入する問題です.優先順位は最大3!したがって、リストに個別に保存します.手書きで書くのが難しいと思えば,dfs,シーケンス,組合せなどを用いて実現できる.
ソースコード
def calculate(seq, operator, operand):
calculate_seq = [
["*", "+", "-"],
["*", "-", "+"],
["+", "*", "-"],
["+", "-", "*"],
["-", "*", "+"],
["-", "+", "*"],
]
cal_operator = operator[:]
cal_operand = operand[:]
for i in range(3):
idx = 0
while idx < len(cal_operator):
if calculate_seq[seq][i] == cal_operator[idx]:
a = int(cal_operand.pop(idx))
b = int(cal_operand.pop(idx))
op = str(cal_operator.pop(idx))
# 계산
if op == "*":
cal_operand.insert(idx, a * b)
elif op == "+":
cal_operand.insert(idx, a + b)
else:
cal_operand.insert(idx, a - b)
idx -= 1
idx += 1
# 마지막 남은 피연산자 절대값 씌워 리턴
return abs(cal_operand[0])
def solution(expression):
answer = 0
operator = []
for i in range(len(expression)):
if expression[i] == "-" or expression[i] == "*" or expression[i] == "+":
operator.append(expression[i])
expression = expression.replace("*", ",")
expression = expression.replace("+", ",")
expression = expression.replace("-", ",")
operand = list(map(int, expression.split(",")))
for i in range(6):
answer = max(calculate(i, operator, operand), answer)
return answer
Reference
この問題について([プログラマー]最大化式(Python)), 我々は、より多くの情報をここで見つけました https://velog.io/@qweadzs/프로그래머스-수식-최대화Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol