📚 출처 - 1541 - 잃어버린 괄호
문제 설명
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
입출력 예
예제 입력 | 예제 출력 |
---|---|
55-50+40 | -35 |
10+20+30+40 | 100 |
00009-00009 | 0 |
처음에는 문제를 제대로 읽지 않아 입력으로 들어오는 값을 계산만 하면 되는 줄 알았다.
그래서 아래의 코드와 같이 구분자를 포함해 split을 진행했고 그대로 계산했지만 문제를 잘못 읽었으므로 당연히 실패!!
그래서 다시 읽어보니 임의의 괄호를 쳐 가장 최솟값을 나오게 해야 되는데, +
의 값들은 다 더해주고 -
값이 나오게 되면 그 값을 그대로 빼주면 최솟값이 나오게 된다.
Logic 1
1.-
를 이용해 split을 진행해준다.
그렇게 되면80, 80+10
이런식으로-
를 제외한 값이 남게 된다.
2. 위의 값을 이용해 초기 값 0번 째 값만 더해 주고,-
가 나오는 뒤의 값부터는 모두 빼주면 최솟값이 나오게 된다.
exp = input().split('-')
ans = 0
for i in exp[0].split('+'):
ans += int(i)
for i in exp[1:]:
for j in i.split('+'):
ans -= int(j)
print(ans)