# 잃어버린 괄호
n = input().split('-')
first = sum(list(map(int,n[0].split('+'))))
for i in range(1,len(n)):
first -= sum(list(map(int,n[i].split('+'))))
print(first)
최소의 값을 만들기 위해서는 처음에 나오는 수 이외에는 모두 빼기로 연산될 수 있도록 괄호를 넣어줘야 한다.
- 기호가 나올때마다 괄호를 시작하고 닫아주면 된다.
예를 들어
55-40+30+80이면
55-(40+30+80)
55+40-30-50-60+50 이면
55+40-(30)-(50)-(60)+50
- 기호가 처음 나올땐 괄호를 열어주고
그 다음 - 기호가 나오면 괄호를 닫아주면 모두 빼는 연산이 된다.
*그리디(greedy)
이 문제에서 그리디 개념이 사용된 부분은
최소값을 만들기 위해서는 '+' , '-' 중 '-' 기호가 더 좋으므로
'-'기호만 사용하도록 선택하도록 하는 아이디어가 아닐까 싶다.
728x90
'알고리즘 문제풀이 > Greedy' 카테고리의 다른 글
백준 2720 파이썬(그리디) (0) | 2021.10.02 |
---|---|
백준 1339 파이썬(그리디) (0) | 2021.10.02 |
백준 1789 파이썬(그리디) (0) | 2021.10.02 |
백준13305 파이썬(그리디) (0) | 2021.09.22 |
백준 1931 파이썬(그리디) (1) | 2021.09.22 |