Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

forDevLife

[백준] 1541 - 잃어버린 괄호 (자바) 본문

알고리즘

[백준] 1541 - 잃어버린 괄호 (자바)

JH_Lucid 2021. 4. 30. 20:16

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] substraction = br.readLine().split("-");
        int sum = Integer.MAX_VALUE;

        for(int i=0; i<substraction.length; i++) {
            int temp = 0;
            String[] addition = substraction[i].split("\\+");

            //덧셈으로 나눈 토큰을 모두 더함
            for(int j = 0; j<addition.length; j++) {
                temp+= Integer.parseInt(addition[j]);
            }

            //첫 번째 토큰인 경우, temp 값이 첫 번째 수가 됨
            if(sum == Integer.MAX_VALUE) {
                sum = temp;
            } else {
                sum -= temp;
            }
        }
        System.out.println(sum);
    }
}

- split을 이용한 방식

- +는 메타문자라, \\+로 split 해야한다. -는 메타문자 아님.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int sum = Integer.MAX_VALUE;
        StringTokenizer substraction = new StringTokenizer(br.readLine(), "-");

        while(substraction.hasMoreTokens()) {
            int temp = 0;

            //뺄셈으로 나뉜 토큰을 덧셈으로 분리하여 해당 토큰 더한다.
            StringTokenizer addition = new StringTokenizer(substraction.nextToken(), "+");

            while(addition.hasMoreTokens()) {
                temp+=Integer.parseInt(addition.nextToken());
            }

            // 첫 번째 토큰은 그대로 놔두, 나머지는 뺀다.
            if(sum == Integer.MAX_VALUE) {
                sum = temp;
            } else {
                sum -= temp;
            }
        }

        System.out.println(sum);
    }
}

- StringTokenizer를 사용한 방식

Comments