알고리즘/백준
백준-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);
}
}