자바 split

정동현·2022년 11월 23일

백준 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)이므로(특별한 의미를 담고 있다는 뜻, ([{\^-=$!|]})?*+. 등) 온전하게 문자 그 자체로 이용하기 위해서는 이스케이프 처리를 해야한다. 하지만 (백슬래시)도 단독으로 출력할 수 없기 때문에 백슬래시 자체도 이스케이프 해야한다. 즉 \+ 를 해야 우리가 분리하고자 하는 "+" 문자 그대로 분리할 수 있다.

profile
화이팅

0개의 댓글