풀이
- 나는 처음에 괄호를 적절히 쳐서 최소로 만들라기에 숫자들 사이에 괄호를 쳐서 0으로 만들 생각을 했다.. 그렇게 하면 첫 번째 예제의 정답은 -185여야 하는데 -35...?
- 다시 생각해보니까 문제 의도는 숫자들 사이에 괄호를 넣으면 안 되고 숫자 끝과 끝에 괄호를 넣으라는 것 같다.
- 즉, - 연산자가 나오면 - 연산자가 나오기 전까지 모두 괄호로 묶어 최대한 큰 음수를 만들어주면 되는 것이다.
- 문제를 이해하고 나니까 그냥 split으로 뚝딱 만들어지겠군 해서 오랜만에 금방 짠 코드이다.
코드
import sys
input = sys.stdin.readline
calc = input().split('-')
fst = map(int, calc[0].split('+'))
res = sum(fst)
for i in range(1, len(calc)):
num = calc[i].split('+')
tmp = 0
for j in num:
tmp += int(j)
res -= tmp
print(res)
- 나는 먼저 출력할 res에 입력의 가장 첫 번째 값을 담아주고, for문으로 나머지를 빼주었다.
왜냐하면 첫 번째는 무조건 -로 시작하지 않기 때문에 빼주면 안 돼서다!
- 다른 사람들 코드를 보니까 -로 split한 요소들을 + 연산으로 더해주고 새로운 리스트에 저장하더라. 그래도 되겠군!
결과
