package backjun.I그리디;
import java.util.Scanner;
public class 잃어버린괄호 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String[] s = sc.nextLine().split("-");
sc.close();
int sum = 0;
for(int t=0; t<s.length; t++){
String[] i = s[t].split("\\+");
int tmp = 0;
for(String j:i){
tmp += Integer.parseInt(j);
}
if(t==0) sum += tmp;
else sum -= tmp;
}
System.out.println(sum);
}
}
그리디 알고리즘으로 해결한 문제
이 문제에서 핵심은 처음에 -로 먼저 split하고 그 다음 +로 split해서 연산한다는 점이다.
이렇게 하면 먼저 더한 후 빼게 된다. 즉 큰 수를 만들고 그 큰 수로 빼게 되므로 최소 값을 만들 수 있다.
Java의 경우 특수기호를 바로 사용해서 split()하게 되면 예외처리가 발생한다.
split() 할 때 특수기호를 기준으로 해야한다면 앞에 \를 붙여줘야 정상적으로 작동한다.