[1541] 잃어버린 괄호
1541번: 잃어버린 괄호
+,-가 있는 식에서 괄호를 쳐서 값을 최소로 만드는 문제이다…! 사실 최소로 만든다는 것에 초점을 주면 -가 붙은 값을 크게 만들면 된다. 포인트는 괄호를 치면 분배 법칙에 의해서 +를 -로 바꿀 수 있다는 점이다.
따라서 - 와 - 사이에 것들을 괄호치면 된다. 이를 이용하면…
- +를 ‘ ‘로 대체하고, -를 ‘ -‘로 대체한다. (공백이 무조건 있어야 한다.)
- 공백이 있다면 split을 이용할 수 있기 때문에 이를 리스트로 넣을 수 있다.
- list로 하나씩 살펴가면서 음수일 때 플래그를 활성화 시키고, 이후 나오는 양수는 -로 치환한다. (플래그를 negative로 정의함)
- 만약 음수 플래그에 음수라면 그대로 + 시킨다.
이러면 -와 -사이의 값을 괄호친 것과 동일하다.
풀이
import sys
if __name__ == '__main__':
strings = sys.stdin.readline()
nums = []
strings = strings.replace('+', ' ').replace('-', ' -')
nums = list(strings.split())
sum = 0
negative = 0
for i in nums:
num = int(i)
if num < 0:
negative = 1
sum += num
else:
if negative == 1:
sum -= num
else:
sum += num
print(sum)
Leave a comment