문제 이해
숫자, +와 - 로 이루어진 계산식에서 괄호를 넣었을때의 최솟값을 구하는 문제이다.
이 문제를 풀기 위해서는 식에서 최솟값이 되는 경우를 찾아야 한다.
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 |