https://www.acmicpc.net/problem/1541
알고리즘 [접근 방법]
'덧셈 부분을 먼저 계산 하는 것'
1. 뺄셈(-)을 기준으로 1차적으로 문자열을 분리해준다.
2. 분리된 문자열들 각각에 포함 된 정수 값들을 모두 더 해준다.
3. 각각 더해진 값들을 뺄셈해준다.
뺄셈기호(-)를 중심으로 먼저 문자열을 분리해준 뒤, 각 분리된 문자열안에 있는 정수끼리 더해준다. 그 다음 분리된 문자열들을 뺄셈을 해주면 되는 것이다.
이 때 주의해야 할 점은 '첫 번째 수는 양수'라는 점이다. 만약 모조리 빼버리면 첫 번째 수도 음수가 되어 결과값이 -335가 되어버리는 잘못된 답이 나온다. 이를 유의하여 코딩해야 한다.
package baekjoon_java.SilverⅡ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class 잃어버린괄호 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int sum = Integer.MAX_VALUE; // 초기 상태 여부 확인을 위한 값으로 설정
StringTokenizer subtraction = new StringTokenizer(br.readLine(), "-");
while (subtraction.hasMoreTokens()) {
int temp = 0;
// 뺄셈으로 나뉜 토큰을 덧셈으로 분리하여 해당 토큰들을 더한다.
StringTokenizer addition = new StringTokenizer(subtraction.nextToken(), "+");
// 덧셈으로 나뉜 토큰들을 모두 더한다.
while (addition.hasMoreTokens()) {
temp += Integer.parseInt(addition.nextToken());
}
// 첫 번째토큰인 경우 temp값이 첫 번째 수가 됨
if (sum == Integer.MAX_VALUE) {
sum = temp;
} else {
sum -= temp;
}
}
System.out.println(sum);
}
}```