코딩테스트/백준
[Dev-Ping9] 백준 1541번 - 잃어버린 괄호 (Java)
DevPing9_
2022. 1. 9. 22:56
# 문제 설명
괄호는 여러개가 될 수 있다
값을 최소로 만들어야 한다.
'-' 연산자 앞에 다음 '-' 연산자가 나오기전까지 괄호를 쳐주면된다.
단순한 구현문제이다.
# 코드 구현
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
public class Main{
static int[] number;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
List<Integer> minus = new ArrayList<>();
//init
int idx=1;
for(int i=0;i<input.length(); i++){
if(input.charAt(i)=='-' || input.charAt(i)=='+'){
if(input.charAt(i)=='-'){
minus.add(idx);
}
idx++;
}
}
minus.add(idx); // 마지막 숫자 뒤 인덱스
input = input.replace("+"," ");
input = input.replace("-"," ");
String[] numStrings = input.split(" ");
number = new int[numStrings.length];
idx = 0; int sum=0;
for(String numString : numStrings){
number[idx] = Integer.parseInt(numStrings[idx]);
sum+=number[idx++];
}
// 최소값이니까 '-' 앞에서 괄호로 최대한 크게 묶으면 됨
// find where to make ()
// 괄호 한번치는게 아니라 여러번 칠수 있는거였음....
idx= 0;
for(int i=0; i<minus.size()-1; i++){
int temp = 0;
for(int j=minus.get(i); j<minus.get(i+1); j++){
temp+=number[j];
}
sum-= temp*2 ;
}
System.out.println(sum);
}
}
728x90