1. 문제
https://www.acmicpc.net/problem/1541
2. 풀이 과정
주어진 식에서 빼기가 있다면 괄호를 묶어 뒤에 나오는 모든 수를 빼기 연산으로 만들 수 있다.
따라서 식의 값을 최소로 만드는 방법은 식에서 처음 나오는 빼기 뒤의 수들을 모두 뺄셈 연산을 수행해주면 된다.
예) 50+10-30+10+20-30+10 = 50+10-(30+10+20)-(30+10) 으로 묶어보면 분배 법칙을 통해 '-'를 다 적용해줄 수 있다.
s = input()
def sum_value(a):#무조건 더하기 연산
result = 0
b = 1
for i in range(len(a))[::-1]:
if a[i] != '+' and a[i] != '-':
result += int(a[i]) * b
b*=10
else:
b = 1
return result
if '-' in s: #빼기가 있는 식이면
c = s.index('-')
r = sum_value(s[:c])-sum_value(s[c+1:])
else: # 빼기가 없는 식이면
r = sum_value(s)
print(r)
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Python_Greedy] 백준 1789번 : 수들의 합 (0) | 2021.08.04 |
---|---|
[Python_Greedy] 백준 2217번 : 로프 (0) | 2021.08.03 |
[Python_Greedy] 백준 11047번 : 동전 0 (0) | 2021.08.02 |
[Java] 백준 1929번 : 소수 구하기 (0) | 2021.03.01 |
[Java, Python] 백준 1011번 : Fly me to the Alpha Centauri (2) | 2021.03.01 |