[1541] 잃어버린 괄호

백준 문제 풀이

level: Sliver 2

문제 링크

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)