백준 1541번 잃어버린 괄호를 풀다가...
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int min = 0;
Boolean check = true;
String input = scanner.nextLine();
String[] subtract = input.split("-");
for (int i = 0; i < subtract.length; i++) {
String[] add = subtract[i].split("\\+");
int sum = 0;
for (int j = 0; j < add.length; j++) {
sum += Integer.parseInt(add[j]);
}
if (check) {
min += sum;
check = false;
}
else min -= sum;
}
System.out.println(min);
}
}
여기서 주의해야 할 점은 split의 경우 정규식(regex)을 받기 때문에 "+"을 하면 regex.PatternSyntaxException가 터진다. + 문자가 정규식 메타문자(meta character)이므로(특별한 의미를 담고 있다는 뜻, ([{\^-=$!|]})?*+. 등) 온전하게 문자 그 자체로 이용하기 위해서는 이스케이프 처리를 해야한다. 하지만 (백슬래시)도 단독으로 출력할 수 없기 때문에 백슬래시 자체도 이스케이프 해야한다. 즉 \+ 를 해야 우리가 분리하고자 하는 "+" 문자 그대로 분리할 수 있다.