+
, -
연산자로 이루어진 식이 주어질 때, 괄호를 적절히 쳐서 식의 값을 최소로 만드는 프로그램을 작성하면 됩니다.1
이상 1000000
이하의 양수와 +
, -
연산자로 이루어져 있으며, 연산자는 최소 한 개 이상 존재합니다. 식의 길이는 최대 50
입니다.50-50+40-30+20-10
-100
-
를 기준으로 나누어 각 덩어리를 구분합니다.expression = input().strip()
# 1. '-'를 기준으로 먼저 나눈다.
parts = expression.split('-')
# 2. 첫 번째 덩어리는 무조건 더한다.
total = sum(map(int, parts[0].split('+')))
# 3. 그 이후 덩어리는 모두 괄호로 묶인다고 생각하고 각각 +로 쪼개서 합산한 뒤 빼기
for part in parts[1:]:
total -= sum(map(int, part.split('+')))
print(total)
line = input().strip().split("-")
answer = sum(list(map(int, line[0].split("+"))))
print(answer if len(line) <= 1 else answer - sum([list(map(int, s.split("-")))[0] for s in "+".join(line[1:]).split("+")]))
1-10+20-30+40
50-30+25+50
55-50+40
0-10+20+40
10-00020+00030+00025
10-20+30-40+50-60+70
100-10+5+30+40+100
100