백준 문제 풀이
백준 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)
반응형