<풀이방식>
1. 먼저 처음 주어지는 수식을 '-' 기준으로 자른다. 이유는 '-' 양쪽에 있는 애들을 각각 더해서 빼는게 가장 차이가 크게 벌어지기 때문이다. 예제를 기준으로 55-50+40 은 55 , 50+40 으로 나뉜다.
2. 앞에서 '-' 기준으로 나눈 토큰을 다시 '+'기준으로 잘라서 각각 더해준다. 예제를 기준으로 55, 50+40 이니까 각각 55, 90이된다.
3. 각각의 숫자를 리스트에 넣고 서로 뺀다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
ArrayList<String> strList = new ArrayList<>();
int cnt = 0;
// 1. '-' 기준으로 잘라서 리스트에 추가
for(int i = 0 ; i < str.length(); i++) {
if(str.charAt(i) == '-' ) {
String token = str.substring(cnt, i);
strList.add(token);
cnt = i+1; //다음 글자로 포인터 옮겨둠
}
else if(i == str.length()-1) {
String token = str.substring(cnt, i+1);
strList.add(token);
}
}
ArrayList<Integer> numList = new ArrayList<>();
//2. '+' 기준으로 잘라서 각각 더해줌
for(int i = 0 ; i < strList.size(); i++) {
String token = strList.get(i);
int cnt2 = 0;
int total = 0;
for(int j = 0 ; j < token.length(); j++ ) {
if(token.charAt(j) == '+' ) {
total += Integer.parseInt(token.substring(cnt2, j));
cnt2 = j+1;
}
else if(j == token.length()-1) {
total += Integer.parseInt(token.substring(cnt2, j+1));
}
}
numList.add(total);
}
//3. 리스트에 있는 값 다 가져와서 빼버린게 정답.
int answer = numList.get(0);
for(int i = 1; i < numList.size(); i++)
answer -= numList.get(i);
System.out.println(answer);
}
}