import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LostBracket {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split("-");
int sum = 0;
for (int i = 0; i < str.length; i++) {
String[] temp = str[i].split("[+]");
int tempSum = 0;
for(String s : temp){
tempSum += Integer.parseInt(s);
}
if(i == 0){
sum += tempSum;
}
else {
sum -= tempSum;
}
}
System.out.println(sum);
}
}
📢 이 풀이의 핵심은 가장 작은 수가 나오는 경우의 수를 찾는것이다.
값이 가장 작아지도록 괄호를 치려면, -값이 가장 커지도록 괄호를 해야한다.
즉, -를 기준으로 문자열을 나눠줘야 한다는 것이 핵심이다.
괄호를 하나씩 놓아서 최솟값을 찾아보는 완전탐색을 사용해보려했는데,
설계가 감이 안잡혔다.
-를 기준으로 문자열을 나눠야 가장 값이 작아지는 것을 알지 못했다,,
또한 split 메서드 사용시 +,*,^는 이스케이프 문자를 사용해야 한다는 것도 새로 알 수 있었다.