난이도 : silver 2
세준이는 양수와 +, -, 그리고 괄호를 가지고 길이가 최대 50인 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다.
첫째 줄에 정답을 출력한다.
수식에서 최소값을 만들기 위해서는 괄호를 이용해 최대한 많은 '-'를 만들어야 한다. '-'가 한번 나온 순간부터 뒤의 연산자들은 괄호를 이용해 전부 음수 연산으로 만들수 있다. '-'가 처음 나타나는 인덱스를 구해서 해당 인덱스 이후부터는 전부 음수연산을 해주면 된다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String formula = br.readLine();
formula+='+';//마지막에 부호를 추가함으로써 계산완료
int result = 0;
String number = "";
int minusIndex = formula.indexOf('-');//'-'의 첫 인덱스 혹은 -1
if(minusIndex == -1)
minusIndex = formula.length();
for(int i=0;i<formula.length();i++){
if(formula.charAt(i)=='-' || formula.charAt(i)=='+'){
if(minusIndex < i)//무조건 뺌
result -= Integer.parseInt(number);
else//무조건 더함
result += Integer.parseInt(number);
number = "";
}else{
number += formula.charAt(i);
}
}
System.out.println(result);
}
}