문제 바로가기> 백준 1541번: 잃어버린 괄호
우선 문자열을 파싱한 후, '+' 연산을 먼저해주고, '-'연산을 적용하는 식으로 문제를 풀었다.
def solution():
import sys
input = sys.stdin.readline
expression = input()
nums, operator, nums2 = [], [], []
begin = 0
for i in range(len(expression)):
if expression[i]=='+' or expression[i]=='-':
operator.append(expression[i])
nums.append(int(expression[begin:i]))
begin = i+1
nums.append(int(expression[begin:len(expression)]))
tmp = nums[0]
for i in range(len(operator)):
if operator[i] == '+':
tmp+=nums[i+1]
else:
nums2.append(tmp)
tmp = nums[i+1]
nums2.append(tmp)
ans = nums2[0]*2
for i in nums2: ans-=i
print(ans)
solution()
split() 함수를 써서 더 간단하게 풀 수도 있다.
def solution():
import sys
input = sys.stdin.readline
expressions = input().split('-')
ans = 0
for i in expressions[0].split('+'):
ans += int(i)
for i in expressions[1:]:
for j in i.split('+'):
ans -= int(j)
print(ans)
solution()