예를 들어 10 - 20 + 30 이라는 식이 주어졌을 때
(10 - 20) + 30을 계산하면 20이 나오고
10 - (20 + 30)을 계산하면 -40이 나온다.
이처럼 괄호의 위치에 따라 결과값이 달라질 때 최소값이 되도록 하라는 건데,
+를 사이에 두고 있는 수들(20, 30)을 먼저 더한 후에 -의 앞에 있는 수들에서 빼주면 된다.
그러려면 우선 식을 -를 기준으로 쪼개줘야 하는데, split() 메서드를 사용하면 된다.
이 예시의 경우 10과 20+30로 나뉘고,
20 + 30을 다시 +를 기준으로 쪼개서 20과 30을 더해 50을 만들고 그걸 10에서 빼주면 된다.
+를 기준으로 식을 쪼갤 때 주의해야 할 점은 str.split("+")라고 쓰면 오류가 나므로
str.split("\\+")라고 써줘야 한다.
(+가 덧셈기호라서 일반 문자들처럼 쓸 수 없는 것 같다.)
import java.io.*;
import java.util.*;
class Exercise {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = (br.readLine()).split("-");
int res = 0;
for(int i=0;i<arr.length;i++) {
int sum = 0;
String[] addition = arr[i].split("\\+");
for(int j=0;j<addition.length;j++) {
sum += Integer.parseInt(addition[j]);
}
if(i==0) {
// 입력되는 수는 모두 양수라서 첫번째 수는 무조건 더해줘야 함
res += sum;
}
else {
res -= sum;
}
}
System.out.println(res);
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 1764 : 듣보잡 JAVA 풀이 (0) | 2022.06.17 |
---|---|
[백준] 10808 : 알파벳 개수 JAVA (0) | 2022.06.17 |
[백준] 12101 : 1, 2, 3 더하기 2 JAVA 풀이 (0) | 2022.06.11 |
[백준] 10825 : 국영수 JAVA 풀이 (0) | 2022.06.11 |
[백준] 11652 : 카드 JAVA 풀이 (0) | 2022.06.11 |