https://www.acmicpc.net/problem/1541
#틀린 풀이
import re
ex = input()
temp = ''
cnt = 0
for i in ex:
if i == '-':
if cnt % 2 == 0:
temp = temp + i + '('
cnt += 1
else:
temp = temp + ')' + i
cnt += 1
else:
temp += i
if cnt % 2 == 1:
temp += ')'
pattern = r'(?<!\d)0+(\d+)'
res = re.sub(pattern, r'\1', temp)
print(eval(res))
#맞은 풀이
ex = input().split('-')
num = []
for i in ex:
sum = 0
temp = i.split('+')
for j in temp:
sum += int(j)
num.append(sum)
res = num[0]
for i in range(1, len(num)):
res -= num[i]
print(res)
'-'가 나오면 이후 '+'을 괄호로 묶어 풀면 된다.
해결책은 빨리 나왔는데 코드로 구현하는 데에 오래 걸렸다.
원래는 eval함수로 풀려했는데 0009-0009와 같이 0으로 시작하는 수는 풀 수 없다는 에러가 떴다. 그래서 패턴을 통해 0을 지우고 eval함수를 쓰려 했는데 이것도 에러가 떠서 다른 분의 코드를 참고했다.
먼저 '-'를 기준으로 문자열을 나눈 뒤, 다시 '+'를 기준으로 문자열을 나누고 마이너스 연산을 실행하면 된다.