
import java.util.*;
public class Boj1541 {
static int answer = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String expression = sc.nextLine(); // 식 입력 받기
String[] expressions = expression.split("-"); // 최소값을 구하기 위해서는 -의 뒤에 값이 커야하기에 - 기준으로 나누기
for (int i = 0; i < expressions.length; i++) {
int sum = mySum(expressions[i]); // - 뒤에 값을 합
if (i == 0) { // 모두 양수이기 떄문에 맨 앞의 수는 무조건 더한다.
answer = answer + sum;
} else { // 그 외에 수는 뺀다.
answer = answer - sum;
}
}
System.out.println(answer);
}
// -의 뒤의 수를 최댓값으로 만들기 위해 앞의 -와 뒤의 -사이에 괄호를 넣어 그 최댓값을 계산하는 메서드
private static int mySum(String expression) {
int sum = 0;
String[] numbers = expression.split("\\+"); // split 메서드를 사용할 때 regex에 "+"를 넣으면 에러 발생하기 떄문에 "\\+" 혹은 "[+]" 넣기
for (int i = 0; i < numbers.length; i++) {
sum += Integer.parseInt(numbers[i]);
}
return sum;
}
}
해당 문제는 주어진 식에 괄호를 사용하여 최솟값으로 만드는 문제이기에 - 뒤에 수들을 괄호로 묶어주면 되는 문제이다.
expression 변수에 할당한다.-뒤에 수를 최댓값으로 만들어주기 위해 splie("-")으로 -을 기준으로 문자열을 나눈다.expressions 배열의 크기만큼 반복을 하면서 -의 뒤에 수들(괄호로 묶은 수들)의 합을 구하는 mySum() 메서드를 호출하여 합을 구한다.if문을 통해 answer에 첫 식은 더해준다.answer를 출력한다.
split("+")처럼+를 기준으로 문자열를 나누면Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 +에러가 발생한다.
에러가 발생하지 않기 위해서는
split("\\+")혹은split("[+]")를 사용하면 된다.