황소개발자

백준 16637 파이썬 python : 괄호 추가하기 @@황소처럼 우직하게@@ 요샌풀면 "이게 되네" 본문

백준 문제 풀이

백준 16637 파이썬 python : 괄호 추가하기 @@황소처럼 우직하게@@ 요샌풀면 "이게 되네"

hjp845 2020. 4. 22. 23:36
반응형

짬밥이 늘어버린겨..

go 함수로 일단 lst 함수에 어떤 연산을 먼저할건지 정하고

stack 이용해서 우선연산 계싼처리

그후 한번 더 계싼처리

ans = 0 으로 초기화해서 살짝 반례찾았었네..

최소값은 -999999999

n = int(input())
given = input()

op = [0] * ((n - 1) // 2)

lst = []

def go(idx, flag, hist):
    if idx == (n - 1) // 2:
        lst.append(hist)
        return
    if flag:
        go(idx + 1, False, hist + [0])
    else:
        go(idx + 1, True, hist + [1])
        go(idx + 1, False, hist + [0])

go(0, False, [])

def cal(a, b, oper):
    if oper == "*":
        return a * b
    elif oper == "+":
        return a + b
    elif oper == "-":
        return a - b

ans = -999999999

for case in lst:
    stack = []
    i = 0
    while i < n:
        if i % 2 == 0: # number
            stack.append(given[i])
        else: # oper
            if case[(i - 1) // 2]:
                left = int(stack.pop())
                right = int(given[i + 1])
                stack.append(cal(left, right, given[i]))
                i += 1
            else:
                stack.append(given[i])
        i += 1

    first = int(stack.pop(0))
    for i in range(0, len(stack), 2):
        first = cal(first, int(stack[i + 1]), stack[i])

    ans = max(ans, first)

print(ans)

 

 

반응형
Comments