(프로그래머스 with python) 수식 최대화
Level2 - 수식 최대화
https://programmers.co.kr/learn/courses/30/lessons/67257
다시 풀어보아야 할 문제중 하나이다. 조건을 나누어서 생각해야 하는데 생각보다 쉽지 않다. 일단 지문이 길면 겁부터 먹는것 같다…
주의할 점
-
문자열 안에 담긴 숫자와 부호를 같은 리스트에 하나의 요소로 넣어야 한다.
-
숫자와 부호의 위치는 항상 정상적으로 나온다는 것을 생각하자 ex) 3 + - 4 + .. 이런 경우는 없음 !
from itertools import permutations
def operation(n1, n2, op):
if op == '+':
return str(int(n1) + int(n2))
if op == '-':
return str(int(n1) - int(n2))
if op == '*':
return str(int(n1) * int(n2))
def calc(express, op):
_express = express.copy()
tmp = ''
for o in op:
stack = []
while len(_express) != 0:
tmp = _express.pop(0)
if tmp == o:
stack.append(operation(stack.pop(), _express.pop(0), o))
else:
stack.append(tmp)
_express = stack
return abs(int(_express[0]))
def solution(expression):
oper = ['+', '-', '*']
oper_li = list(permutations(oper, 3))
express = []
tmp = ''
answer = []
for i in expression:
if i.isdigit():
tmp += i
else:
express.append(tmp)
express.append(i)
tmp = ''
express.append(tmp)
for op in oper_li:
answer.append(calc(express, op))
return max(answer)