https://www.acmicpc.net/problem/1541
이 문제는 -가 나오고 난 후의 숫자들은 전부 빼 주어야 하는 문제이다.
우선, -를 기준으로 split을 하고 나면 -의 앞 숫자, -, 뒷 숫자들이 배열에 저장된다. 이 때 뒷 숫자들은 다시 +를 기준으로 분리를 해 준 후 더해 주어야 한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//식 : 0~9, -으로만 이루어짐
//최소값을 만들어야 함
//가장 많이 더해서 빼야 함
//주어진 숫자에서 -부분 이후 값을은 다 더해주어야 함
int result = 0;
String[] front = br.readLine().split("-"); //-앞까지의 수
for (int j = 0; j < front.length; j++) { //-뒷부분
int total = 0; //뒷부분의 합
String[] back = front[j].split("\\+"); //+는 특수문자이므로 이스케이프 처리를 해 주어야 함. 역슬래시도 이스케이프 문자이므로 두 개를 사용해서 표현해 주어야 함
for (int i = 0; i < back.length; i++) {
total = total + Integer.parseInt(back[i]); //뒷부분의 합
}
if (j == 0) {
result = result + total; //맨 앞의 숫자는 더해줌
} else {
result = result - total;
}
}
System.out.println(result);
br.close();
}
}
+가 이스케이프 문자인 것을 몰랐기 때문에 초반에 시간 소모가 조금 있었다. 또한, 예제 입력만 가지고 -와 +로 나눈 후의 뒷부분이 무조건 하나일 것이라 생각하여 처음에는 for문을 적용해 주지 않아 시간이 조금 더 걸렸던 문제이다.