2023.04.19

1541번: 잃어버린 괄호

+,-가 있는 식에서 괄호를 쳐서 값을 최소로 만드는 문제이다…! 사실 최소로 만든다는 것에 초점을 주면 -가 붙은 값을 크게 만들면 된다. 포인트는 괄호를 치면 분배 법칙에 의해서 +를 -로 바꿀 수 있다는 점이다.

따라서 - 와 - 사이에 것들을 괄호치면 된다. 이를 이용하면…

  1. +를 ‘ ‘로 대체하고, -를 ‘ -‘로 대체한다. (공백이 무조건 있어야 한다.)
  2. 공백이 있다면 split을 이용할 수 있기 때문에 이를 리스트로 넣을 수 있다.
  3. list로 하나씩 살펴가면서 음수일 때 플래그를 활성화 시키고, 이후 나오는 양수는 -로 치환한다. (플래그를 negative로 정의함)
  4. 만약 음수 플래그에 음수라면 그대로 + 시킨다.

이러면 -와 -사이의 값을 괄호친 것과 동일하다.


풀이

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)



Tags:

Categories:

Updated:

Leave a comment