개발지식 먹는 하마 님의 블로그

1541번 - 잃어버린 괄호 본문

coding

1541번 - 잃어버린 괄호

devhippo 2025. 2. 27. 14:43

✏️ 문제 풀이

이번 문제 풀이는 간단하다.

  • -가 등장할 경우, 그 뒤에 등장하는 수를 모두 합해서 뺀다.
    괄호를 원하는 위치에 삽입할 수 있기 때문에 -가 등장하면 그 뒤에 등장하는 모든 수를 따로 합해,
    전체 합계에서 뺄 수 있다.
  • Pattern과 Matcher를 사용해 입력받은 문자열을 구분했다.
    +와- 또는 숫자인 경우의 앞뒤를 잘랐다.
Pattern p = Pattern.compile("(\\d+|[+-])");
Matcher m = p.matcher(s);

List<String> list = new ArrayList<>();

while(m.find()){
    list.add(m.group());
}

 

 

🖥️ 코드

        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();

        //문자열을 +-와 한자리 이상인 숫자를 기준으로 자른다.
        Pattern p = Pattern.compile("(\\d+|[+-])");
        Matcher m = p.matcher(s);

        List<String> list = new ArrayList<>();

        while(m.find()){
            list.add(m.group());
        }

        int result = 0;
        boolean isSub = false; //빼기 여부
        for(int i = 0; i < list.size(); i++){
            String str = list.get(i);
            if(str.equals("-")){
                isSub = true;
            }
            else{
                if(!str.equals("+")){
                    if(isSub){ //-이후에 위치한 값이면 뺀다.
                        result -= Integer.parseInt(str);
                    }
                    else{ //-이전에 위치한 값이면 더한다.
                        result += Integer.parseInt(str);
                    }
                }
            }
        }
        sc.close();
        System.out.println(result);

'coding' 카테고리의 다른 글

프로그래머스 lv2 - 시소 짝꿍  (0) 2025.03.05
1316번 - 그룹 단어 체커  (0) 2025.02.28
13305번 - 주유소  (0) 2025.02.26
1931번 - 회의실 배정  (0) 2025.02.25
1992번 - 쿼드트리  (0) 2025.02.24