[Silver Ⅱ][JAVA] 1541번 : 잃어버린 괄호

호수·2023년 9월 23일
0

JAVA 알고리즘

목록 보기
30/67
post-thumbnail
post-custom-banner

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

알고리즘 [접근 방법]
'덧셈 부분을 먼저 계산 하는 것'
1. 뺄셈(-)을 기준으로 1차적으로 문자열을 분리해준다.
2. 분리된 문자열들 각각에 포함 된 정수 값들을 모두 더 해준다.
3. 각각 더해진 값들을 뺄셈해준다.

뺄셈기호(-)를 중심으로 먼저 문자열을 분리해준 뒤, 각 분리된 문자열안에 있는 정수끼리 더해준다. 그 다음 분리된 문자열들을 뺄셈을 해주면 되는 것이다.

이 때 주의해야 할 점은 '첫 번째 수는 양수'라는 점이다. 만약 모조리 빼버리면 첫 번째 수도 음수가 되어 결과값이 -335가 되어버리는 잘못된 답이 나온다. 이를 유의하여 코딩해야 한다.

  • 방법 : [BufferedReader + StringTokenizer]
package baekjoon_java.SilverⅡ;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 잃어버린괄호 {

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int sum = Integer.MAX_VALUE;	// 초기 상태 여부 확인을 위한 값으로 설정
        StringTokenizer subtraction = new StringTokenizer(br.readLine(), "-");

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

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

            // 덧셈으로 나뉜 토큰들을 모두 더한다.
            while (addition.hasMoreTokens()) {
                temp += Integer.parseInt(addition.nextToken());
            }

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

}```
profile
Back-End개발자 성장과정 블로그🚀
post-custom-banner

0개의 댓글