https://www.acmicpc.net/problem/1541
정답률 53.852%
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
55-50+40
-35
식의 값이 최소가 되어야 하므로 빼기 연산을 기준으로 생각한다. 예제를 생각해보면 -를 기준으로 구분한다.
일 경우가 최솟값이 되는데 더하기 연산이 있는 경우 괄호를 쳐서 먼저 계산해 주면 된다. 그리고 나머지 빼기 연산을 수행한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/*
백준 / 잃어버린 괄호 / 실버2
https://www.acmicpc.net/problem/1541
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
String[] split = input.split("-"); //빼기 연산으로 분할
Integer total = null;
for (String s : split) {
//더하기 연산
int sum = Arrays.stream(s.split("\\+"))
.mapToInt(Integer::parseInt)
.sum();
if (total == null) { //첫번째 연산일 때
total = sum;
} else {
total -= sum;
}
}
System.out.println(total);
}
}