문제
접근
처음에 생각했던 것보다 복잡했다.
우선 입력값을 전처리하여 숫자와 수식으로 나눈다.
그 다음 주어진 수식에 대한 조합을 찾는다.
각 조합별로 수식을 연산한다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from itertools import permutations
def solution(expression):
s = set()
num = []
cal = []
numStr = ''
for e in expression:
if e == '-' or e == '+' or e == '*':
cal.append(e)
s.add(e)
num.append(int(numStr))
numStr = ''
else:
numStr += e
num.append(int(numStr))
permute = list(permutations(s,len(s)))
answer = culc(permute, num, cal)
return answer
def culc(permute, num, cal):
maxSum = 0
for per in permute:
s = 0
numCopy = num[:]
calCopy = cal[:]
for item in per:
idx = 0
while idx < len(calCopy):
if calCopy[idx] == item:
if item == '+':
tmp = numCopy[idx] + numCopy[idx+1]
elif item == '-':
tmp = numCopy[idx] - numCopy[idx+1]
else:
tmp = numCopy[idx] * numCopy[idx+1]
numCopy.pop(idx)
numCopy[idx] = tmp
calCopy.pop(idx)
else:
idx += 1
if numCopy[0] < 0:
numCopy[0] *= -1
if maxSum < numCopy[0]:
maxSum = numCopy[0]
return maxSum