숫자와 +, -로 이루어진 문자열에서 적절하게 괄호()
를 사용해 만들 수 있는 최솟값을 구하는 문제다.
예를들어
100-50+50 이 주어졌을 때의 최솟값은
100-(50+50) = 0이 된다.
최소합을 구하려면 -
가 나올 때 다음 -
가 나올 때 까지 괄호를 쳐주면 된다.
즉, 최대한 큰 수를 빼게끔 만들어주는 것이다.
해당 아이디어를 코드로 구현해보았다.
import sys
read = sys.stdin.readline
problem = str(read())
parenthesis = problem.split("-")
result = []
for numbers in parenthesis:
total = 0
number_list = numbers.split("+")
for number in number_list:
total += int(number)
result.append(total)
if len(result) == 1:
print(result[0])
else:
for i in range(1, len(result)):
result[0] -= result[i]
print(result[0])
-
를 구분자로 설정하여 자른다.+
로 이루어진 수식)을 계산한 후 result
에 저장한다.result
의 길이가 1인 경우(-
가 존재하지 않는 경우) 첫번째 요소을 바로 반환한다.-
이 존재할 때) 배열의 첫번째 값에서 나머지 요소들을 뺀 후 반환한다.