Thief of Wealth
Published 2020. 10. 3. 20:53
1541 잃어버린 괄호 개발/알고리즘

문제

세준이는 양수와 +, -, 그리고 괄호를 가지고 길이가 최대 50인 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

입력

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다.

출력

첫째 줄에 정답을 출력한다.

 

 

 

핵심아이디어를 생각하지 못한다면 매우 복잡할 수 있는 문제이다.

 

핵심아이디어는 -가 등장한 이래 모든 숫자를 뺴버리는 것이다.

 

처음으로 -가 등장한 이후의 연산자는 중요하지 않다. 괄호처리를 통해 얼마든지 다 빼버릴 수 있기 때문이다.

또한, 처음으로 -가 등장하기 전까지는 다 더해버리면된다.

 

import sys
input = sys.stdin.readline

s = input().rstrip() + "!" # !는 문자열 맨마지막 체크용으로 붙여줌.

tmp = ""
answer = 0
minusAppeared = False # 이전에 -가 한번이라도 나오면 그 뒤 모든 값들 다 뺴면 최소값임.
for i in range(len(s)):
  # -거나 +거나 문자열 마지막일때 체크
  if( s[i] == "-" or s[i]=="+" or s[i]=="!"):
    if( not minusAppeared ):
      answer += int(tmp)
      tmp=""
    else:
      answer -= int(tmp)
      tmp=""
    
    if(s[i] == "-"):
      minusAppeared = True
  
  else:
    tmp += s[i]

print(answer)

'개발 > 알고리즘' 카테고리의 다른 글

10162 전자레인지  (0) 2020.10.04
1946 신입사원  (0) 2020.10.04
1931 회의실배정  (0) 2020.10.03
11047 동전 0  (0) 2020.10.02
10282 해킹  (0) 2020.10.02
profile on loading

Loading...