알고리즘/백준

백준-1541번/잃어버린 괄호 (java)

연향동큰손 2024. 10. 1. 13:39

 

 

문제 이해

 

숫자, +와 - 로 이루어진 계산식에서 괄호를 넣었을때의 최솟값을 구하는 문제이다.

이 문제를 풀기 위해서는 식에서 최솟값이 되는 경우를 찾아야 한다.

 

ex)

55-50+40

 

최솟값이 되는 식 ==> 55-(50+40)

 

10+20+30+40

 

최솟값이 되는 식 ==> (10+20+30+40)

 

50+40-60+40

 

최솟값이 되는 식 ==> (50+40)-(60+40)

 

식이 최솟값이 되도록 괄호를 만드려면 "-"를 기준으로 식을 괄호로 나눠주면 된다.

 

문제 해결

 

ex) 

50+40-60+40

 

1) 식을 -를 기준으로 나눠주기

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

 

(50+40) , (60+40)

 

2) 괄호안의 숫자들을 +를 기준으로 나눈 후, 더해주기

for(int i=0; i<sub.length; i++){
    int sum = 0;
    String[] addition = sub[i].split("\\+");
    for(int j=0; j<addition.length; j++){
        sum+=Integer.parseInt(addition[j]);
    }
    if(result==Integer.MAX_VALUE){
        result=sum;
    }
    else{
        result-=sum;
    }
}

 

(50)+(40)=90

 

90 - (60+40) = -10

 

 

<전체 코드>

import java.util.Scanner;

public class Problem1541 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input =scanner.nextLine();
        String[] sub = input.split("-");
        int result = Integer.MAX_VALUE;

        for(int i=0; i<sub.length; i++){
            int sum = 0;
            String[] addition = sub[i].split("\\+");
            for(int j=0; j<addition.length; j++){
                sum+=Integer.parseInt(addition[j]);
            }
            if(result==Integer.MAX_VALUE){
                result=sum;
            }
            else{
                result-=sum;
            }
        }

        System.out.println(result);
    }
}

'알고리즘 > 백준' 카테고리의 다른 글

백준-10610번/30 (java)  (1) 2024.10.04
백준-2875번/대회 or 인턴 (java)  (0) 2024.10.03
백준-11399번/ATM (java)  (0) 2024.08.26
백준-1931번/회의실 배정 (java)  (0) 2024.08.23
백준-11047번/동전 0 (java)  (2) 2024.08.21