본문 바로가기

백준

[백준] 1541번: 잃어버린 괄호

https://www.acmicpc.net/problem/1541

식에 괄호를 쳐서 식의 답이 최소가 되도록 하는 문제다.

어떻게 괄호를 쳐야 답이 최소가 될까?

예시를 한번 보겠다.

55-50+40
->
55-(50+40): 최소

곰곰히 생각해보면, - 뒤에 있는 값들을 더해서 앞의 값과 -를 해야 값이 최소가 될 수 있다.

그렇기 때문에 식을 받고 -를 기준으로 나눈다.

-를 기준으로 분리 -> ['55','50+40']

이후 나눠진 값들을 활용해서 계산을 하면 끝난다.

첫 값에 그 후 값들을 -하면 된다.

그런데 첫 값이 -일 경우도 생각해야하기 때문에, 첫 값이 -이면 그에 따라 계산을 한다. 

n = str(input())
m = n.split('-')
arr = []
result = 0
for num in m:
    temp = num.split('+')
    hap = 0
    for i in temp:
        hap += int(i)
    arr.append(hap)
if n[0] == '-': #-로 시작할 경우
    result -= arr[0]
else: #+로 시작할 경우
    result += arr[0]

for i in arr[1:]:
    result -= i
print(result)