[파이썬/python] 백준 1541번 : 잃어버린 괄호 (🥈2)

import sys
input = sys.stdin.readline

minus = 0
c = 0
num = ""
n = list(input().rstrip())

for i in range(len(n)):
    if n[i] == "-" and minus == 0:
        minus += 1
        c += int(num)
        num = ""
    elif n[i] == "-" or n[i] == "+":
        if minus >= 1:
            c -= int(num)
            minus += 1
            num = ""
        else:
            c += int(num)
            num = ""        
    else:
        num += n[i]
        
if minus >= 1:
    c -= int(num)
else:
    c += int(num)            
print(c)

처음에 이렇게 무식하게 구현하였다..

어쨌든 "-"가 등장하면 그 이후로는 모든 숫자를 빼주는 규칙은 알아냈지만 그것을 구현하는 방법을 너무 무식하게 풀어냈는데,

다른 분들의 식을 보면서 더 간단히 구현하는 법을 알아냈다.

일단 split을 이용하여 -를 기준으로 나눠주고,

-를 기준으로 나눈 제일 첫 번째 식은 전부 더해주고, 그 뒤로 -로 나눠진 식들은 전부 빼주면 되는 것이었다.

split을 적절히 이용하여 효율적으로 풀어내는 것이 핵심인 것 같다..

e = input().split('-')
ans = 0

for i in range(1):
    ans += sum(map(int,(e[0].split("+"))))
    
for i in e[1:]:
        ans -= sum(map(int,(i.split("+"))))

print(ans)

 

comment