백준 1541 - 잃어버린 괄호
Updated:
Java
1541 번 - 잃어버린 괄호
문제
접근 방법
괄호를 적절히 쳐 수식의 최소 값이 나오게 하려면,
연산자 -
가 나온 기점을 기준으로, 앞의 피 연산자의 합과, -
이후의 피 연산자의 합의 차를 구하면 된다.
-
와 +
를 기준으로 문자열을 나누는 방법은 StringTokenizer의 매개변수 -|+
로 주는 것만 주의하면 쉽게 풀 수 있었다.
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer stk = new StringTokenizer(str , "-|+");
List<Integer> list = new ArrayList<>();
// 먼저 피 연산자를 다 구한다.
while(stk.hasMoreTokens()) {
list.add(stoi(stk.nextToken()));
}
char[] arr = str.toCharArray();
int len = arr.length, idx = 1;
// 최소 값을 만들기 위해, -가 처음 나오는 기점을 찾는다.
for(int i = 0; i < len; i++) {
if(arr[i] == '+') {
idx++;
}
else if(arr[i] == '-'){
break;
}
}
int plusSum = 0, minusSum = 0;
// 처음 나오는 연산자 - 보다 앞의 피 연산자를 더한다
for(int i = 0; i < idx; i++)
plusSum += list.get(i);
int size = list.size();
// 처음 나오는 연산자 - 보다 뒤의 피 연산자를 더한다
for(int i = idx; i < size; i++)
minusSum += list.get(i);
System.out.println(plusSum - minusSum);
br.close();
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}