
예를 들어, 10-20+30-40+50이란 식에 괄호를 쳐 최솟값을 만들기 위해서는 10-(20+30)-(40+50) 로 치면 된다.
-를 기준으로 문자열을 나눠 (10, 20+30, 40+50 )초기 값 (10)은 더하고, 이후 더하기 식의 결과는 (50, 90) 은 초기 값에서 빼 답을 구할 수 있다.
import java.util.*;
import java.io.*;
public class Main {
static int answer;
public static void main (String [] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer minusSt = new StringTokenizer(str, "-");
answer += calculate(minusSt.nextToken());
while (minusSt.hasMoreTokens()) {
answer -= calculate(minusSt.nextToken());
}
System.out.println(answer);
}
static int calculate(String str) {
StringTokenizer plusSt = new StringTokenizer(str, "+");
int tmp = 0;
while (plusSt.hasMoreTokens()) {
tmp += Integer.parseInt(plusSt.nextToken());
}
return tmp;
}
}
https://www.acmicpc.net/problem/1541
'알고리즘' 카테고리의 다른 글
| 1325 효율적인 해킹 (0) | 2025.11.24 |
|---|---|
| 1456 거의 소수 (0) | 2025.11.23 |
| 1744 수 묶기 (0) | 2025.10.28 |
| 1715 카드 정렬하기 (0) | 2025.10.28 |
| 1300 K번째 수 (0) | 2025.10.27 |