백준 1541번 바로가기

나의 풀이

# 입력
import sys
read = sys.stdin.readline

eq = read().strip().split('-')
ans = eq[0]
if '+' in ans:
  ans = sum(map(int, ans.split('+')))
else:
  ans = int(ans)

# 처리
for e in eq[1:]:
  if '+' in e:
    e = sum(map(int, e.split('+')))
  ans -= int(e)
print(ans)
  

고수의 풀이

a,*b=[sum(map(int,s.split('+')))for s in input().split('-')];print(a-sum(b))

출처

CODE REVIEW

  1. 먼저 - 부호로 split 해준 뒤에 각각의 sum을 구하고 차례대로 빼주면 최솟값을 얻을 수 있다.
  2. 고수의 풀이를 보면 a-sum(b)로 풀어내었는데, for문을 한 번만 써도 풀어냈다…! 깔끔하구만