[백준] 잃어버린 괄호 1541번 - Java

GOSHK·2022년 2월 11일
0

[백준] Java

목록 보기
25/49
post-thumbnail

[백준] 잃어버린 괄호 1541번

나의 풀이

public class LostBracket {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] items = br.readLine().split("\\-");
        int result = 0;
        result += Arrays.stream(items[0].split("\\+")).mapToInt(i -> Integer.parseInt(i)).sum();

        for(int i = 1; i < items.length; i++) {
            result -= Arrays.stream(items[i].split("\\+")).mapToInt(j -> Integer.parseInt(j)).sum();
        }

        System.out.println(result);
    }
}
  • 쉬워 보였는데 은근 머리 꽁꽁 싸매고 풀었다.
  • -를 기준으로 입력 값을 나눠준다.
  • -로 나눴을 때 맨 처음 값은 일반적인 숫자 하나의 값과 +로 이루어진 식 이렇게 두 가지가 올 수 있다.
  • 그렇기 때문에 리스트의 첫 번째 값을 +로 나눠주고 int형으로 바꾼 다음에 합을 result 에 더해준다. 이렇게 하면 +로 이루어진 식이라면 더해진 값이 될테고, 아니라면 그냥 숫자 하나의 값이 result에 더해질 것이다.
  • 만약 뒤에 식이 더 있다면 for문을 탈 것이다. for문 부터의 식은 -로 잘려진 식이나 값이기 때문에 마찬가지로 +로 나눠서 합을 구하고 result에서 빼주면 된다.

느낀점

  • split을 -나 + 같은 문자로 나누려고 하면 Dangling metacharacter 에러가 발생한다. 그렇기 때문에 앞에 \ 를 붙여줘야 한다.

0개의 댓글