Algorithm/Java

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

dbfl9911 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
반응형