Posts [알고리즘] 프로그래머스 - 수식 최대화
Post
Cancel

[알고리즘] 프로그래머스 - 수식 최대화


문제

수식 최대화


접근

처음에 생각했던 것보다 복잡했다.
우선 입력값을 전처리하여 숫자와 수식으로 나눈다.
그 다음 주어진 수식에 대한 조합을 찾는다.
각 조합별로 수식을 연산한다.


코드

  • 파이썬 코드
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


This post is licensed under CC BY 4.0 by the author.