풀이 이문제는 어렵게 생각할 필요없이 현재 파싱한 문자열중에 -가 나온적이 있다면 그 뒤에 나오는 수들은 전부 빼버리면 된다. 왜냐면 문제에서 괄호를 적절히 처서 최소로 만들라고 했기때문에 -가 하나가 나오든 여러개가 나오는 한번 나온후라면 괄호를 나온만큼 치면 음수가 되기때문이다. 간단한 문제이기에 코드또한 짧고 이해하기 쉬울것이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "");
String ary = st.nextToken();
boolean minus = false;
String temp = "";
int result = 0;
for (int i = 0; i < ary.length(); i++) {
if (ary.charAt(i) == '-' || ary.charAt(i) == '+') {
if (minus) {
result -= Integer.parseInt(temp);
temp = "";
} else {
result += Integer.parseInt(temp);
temp = "";
}
} else {
temp = temp + ary.charAt(i);
}
if (ary.charAt(i) == '-')
minus = true;
}
if (minus) {
result -= Integer.parseInt(temp);
temp = "";
} else {
result += Integer.parseInt(temp);
temp = "";
}
System.out.println(result);
}
}
'백준' 카테고리의 다른 글
[백준] 1182 부분수열의 합 (JAVA) (0) | 2021.09.01 |
---|---|
[백준] 9465 스티커 (JAVA) (0) | 2021.09.01 |
[백준] 4963 섬의 개수 (JAVA) (0) | 2021.08.25 |
[백준] 6603 로또 (JAVA) (0) | 2021.08.25 |
DFS, BFS 복습(스택과 큐) (0) | 2021.08.22 |