from itertools import permutations as pm
import copy
def calculate(ops, expression):
# print(f"ops = {ops}")
# parsing
numbers = set(map(str,range(10)))
lst = list(expression)
expression = []
temp = []
for cell in lst:
if cell in numbers:
temp.append(cell)
else:
expression.append(''.join(temp))
expression.append(cell)
temp = []
expression.append(''.join(temp))
# 우선 순위에 맞게 연산하기
for op in ops:
# print(f"op == {op}")
while op in expression:
# print(f"start! expression = {expression}")
for i, cell in enumerate(expression):
if cell == op:
# print(f"state = {i} {op} {cell}")
# print(f"expression = {expression}")
expression[i] = ''.join([expression[i-1],expression[i],expression[i+1]])
expression[i] = str(eval(expression[i]))
del expression[i+1]
del expression[i-1]
break
return abs(int(expression[0]))
def solution(expression):
result = []
numbers = set(map(str,range(10)))
ops = [x for x in list(expression) if x not in numbers]
ops = set(ops)
ops_priority = list(pm(list(ops), len(ops)))
for ops in ops_priority:
result.append(calculate(ops,expression))
return max(result)
전형적인 카카오 구현 문제 스타일이다.
카카오 구현 문제는 첫 번째로 문제 해석이 중요하다. 왜냐하면 문제 자체의 조건이 복잡하다. 그래서 이것을 꼼꼼히 찢어서 구현하기 쉬운 상태로 만들어야 한다. 그리고 분석을 바탕으로 차분하게 구현하면 끝이다.