반응형
문제
https://www.acmicpc.net/problem/1541
코드
exp = input().split('-')
ans = 0
for i in exp[0].split('+'):
ans += int(i)
for i in exp[1:]:
for j in i.split('+'):
ans -= int(j)
print(ans)
설명
식의 값이 최소가 되려면 최대한 큰 값을 빼주어야 한다.
즉, '-' 뒤의 모든 + 값을 괄호로 묶어주면 된다.
[3 + 5 - 7 + 2 + 8 - 4]
이런 식이 있다고 가정하자.
그렇다면 7과 2와 8을 묶어서 빼주는 게 가장 작은 답이 도출된다.
(3+5), -(7+2+8), -(4)
마이너스를 기준으로 나누어주고 첫 마이너스가 오기 전까지의 수는 다 더해준다.
그리고 그 이후의 수는 다 빼주면 간단하게 답을 도출할 수 있다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 3986: 좋은 단어 (0) | 2023.07.07 |
---|---|
[파이썬, Python] 백준 1439: 뒤집기 (0) | 2023.07.06 |
[파이썬, Python] 백준 3273: 두 수의 합 (0) | 2023.07.04 |
[파이썬, Python] 백준 2559: 수열 (0) | 2023.07.03 |
[파이썬, Python] 백준 2776: 암기왕 (0) | 2023.06.30 |