본문 바로가기
알고리즘/그리디

[java 백준] 실버 2/ 1541번 잃어버린 괄호

by Meaning_ 2022. 2. 15.
728x90
반응형

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

 

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
29
30
31
32
33
34
35
36
37
38
39
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        String[] arr = s.split("-");
        int[] ans = new int[50];
        int n = 0;
 
        for (int i = 0; i < arr.length; i++) {
 
            int cnt = 0;
            if (arr[i] != "") {
                String[] arr2 = arr[i].split("\\+");
                for (int j = 0; j < arr2.length; j++) {
                    cnt += Integer.parseInt(arr2[j]);
                }
                ans[n] = cnt;
                n++;
            }
        }
 
        int num = 0;
        if (arr[0== "") {
            num = -ans[0];
        } else {
            num = ans[0];
        }
        for (int i = 1; i < ans.length; i++) {
            num -= ans[i];
        }
        System.out.println(num);
 
    }
}
cs

 

 

 

그리디 문제를 풀때 어떤 것을 기준으로 잡느냐가 정말 중요한 것 같다. 값이 최소가 나오는게 목표이기 때문에

 

'-'(마이너스)를 기준으로 나눠주는게 중요하다

 

55-50+40 일때 55-(50+40)이 되기 위해서는 문자열을 입력받고 -> String arr=s.split("-")를 이용해서 마이너스 기호를 기준으로 수를 split해준 다음 그걸 배열에 넣는것을 생각해볼 수 있다.

 

그러면 arr[0]=55 arr[1]=50+40이 된다.

 

덧셈을 진행시켜주기 위해서는 50+40을 덧셈기호를 기준으로 split시켜주면 된다. 얘 또한 위의 과정과 똑같긴 한데

String[] arr2 = arr[i].split("\\+");

\\을 써준 이유는

Dangling meta character '+' near index 0에러 때문이다. 문자열을 "+"을 기준으로 잘라줄 때 생기는 에러로 +가 덧셈기호로 작동하기 위해 \\을 붙여준다고 생각하면 된다.(이스케이프 문자)

 

 

https://donghyeon.dev/java/2019/06/05/Dangling-meta-character-'+'-near-index-0-%ED%95%B4%EA%B2%B0/ 

 

Dangling meta character '+' near index 0 해결

java.util.regex.PatternSyntaxException: Dangling meta character ‘+’ near index 0

donghyeon.dev

 

728x90
반응형

댓글