ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준/JAVA] 1541번: 잃어버린 괄호
    Algorithm 2024. 7. 18. 14:04

     

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

     

    - 정답 코드

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    // 괄호 쳐서 식의 값을 최소로
    public class Main {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String input = br.readLine(); // "55-50+40"
    
            //  1. '-' 기준으로 문자열 분할 
            String[] sub = input.split("-"); // ["55", "50+40"]
    
            int result = 0;
    
            for(int i = 0; i < sub.length; i++) {
                int sum = 0;
                // 2. '+' 기호를 기준으로 나눔
                String[] add = sub[i].split("\\+"); 
                // ["55"] 
                // ["50", "40"]
    
                for(int j = 0; j < add.length; j++) {
                    sum += Integer.parseInt(add[j]); 
                    // sum = 55
                    // sum = 90
                }
    
                if(i == 0) {
                    result += sum;
                }else {
                    result -= sum;
                    // result = 55 - 90 = -35
                }
            }
    
            System.out.println(result); // -35
    
        }
    }

    - 코드 설명

     

    1. 식 분할하기:

    String[] sub = input.split("-");

    입력된 문자열을 '-' 기준으로 분할합니다. 이를 통해 나눠진 각 부분은 더하기 연산의 묶음이 됩니다.

     

    2. 덧셈 묶음 분할 및 합산:

     // 2. 첫 번째 부분은 무조건 더해준다.
            for (int i = 0; i < sub.length; i++) {
                int sum = 0;
                // 3. '+'를 기준으로 문자열을 나눈다.
                String[] add = sub[i].split("\\+");
                
                // 4. 각 덧셈 묶음을 더한다.
                for (int j = 0; j < add.length; j++) {
                    sum += Integer.parseInt(add[j]);
                }
                
                // 5. 첫 번째 부분은 결과에 더하고, 나머지는 뺀다.
                if (i == 0) {
                    result += sum;
                } else {
                    result -= sum;
                }
            }

     

    예제 입력 1: 55-50+40

    1. substractions = ["55", "50+40"]
    2. 첫 번째 부분 "55"는 tempSum = 55
    3. 두 번째 부분 "50+40"는 tempSum = 90
    4. result = 55 - 90 = -35

    예제 입력 2: 10+20+30+40

    1. substractions = ["10+20+30+40"]
    2. 첫 번째 부분 "10+20+30+40"는 tempSum = 100
    3. result = 100

    예제 입력 3: 00009-00009

    1. substractions = ["00009", "00009"]
    2. 첫 번째 부분 "00009"는 tempSum = 9
    3. 두 번째 부분 "00009"는 tempSum = 9
    4. result = 9 - 9 = 0

    'Algorithm' 카테고리의 다른 글

    [백준/JAVA] 21314번: 민겸 수  (0) 2024.07.19
    [백준/JAVA] 1931번: 회의실 배정  (0) 2024.07.18
    [백준/JAVA] 16953번: A → B  (0) 2024.07.18
    [백준/JAVA] 13305번: 블로그2  (0) 2024.07.17
    [백준/JAVA] 13305번: 주유소  (0) 2024.07.17
Designed by Tistory.