ps | |
---|---|
링크 | programmers.co.kr/… |
출처 | 프로그래머스 |
문제 번호 | 67257 |
문제명 | 수식 최대화 |
레벨 | Level 2 |
분류 |
브루트포스 |
시간복잡도 | O(n) |
인풋사이즈 | n<=100 |
사용한 언어 | Python |
해결날짜 | 2022/01/10 |
"""Solution code for "Programmers 67257. 수식 최대화".
- Problem link: https://programmers.co.kr/learn/courses/30/lessons/67257
- Solution link: http://www.teferi.net/ps/problems/programmers/67257
"""
import functools
import itertools
import operator
OPERATORS = (('*', operator.mul), ('+', operator.add), ('-', operator.sub))
def solve(expression, operators, i):
if expression.isdigit():
return int(expression)
symbol, op = operators[i]
sub_expressions = expression.split(symbol)
return functools.reduce(
op, (solve(x, operators, i + 1) for x in sub_expressions))
def solution(expression):
return max(
abs(solve(expression, p, 0)) for p in itertools.permutations(OPERATORS))