사용한 것
풀이 방법
- 약간 넌센스 문제인거 같다.
- 괄호로 표현해서 가장 작은 값을 구하는건 '-'가 한번 나오고 부터 계속해서 빼면 된다.
- 예를 들어 "1+2-3+4+5-6+7"이 주어진다고 가정해 보자.
- 1+2-(3+4+5)-(6+7)이 최소이다.
- 마이너스가 등장하면 다시 마이너스가 등장할 때까지 괄호로 계속 더해준 뒤 한꺼번에 빼주고, 다시 마이너스가 등장하면 똑같이 반복하면 된다.
- 결국 마이너스가 등장하기 전까지 모두 더해주고 마이너스가 등장한 이후로는 어떤 연산자가 나오든 계속해서 빼주면 된다.
minus
에 '-'가 나왔는지 값을 저장한다. 처음엔 false
- 반복문을 돌면서 연산자가 나오기 전까지 수를 저장한 뒤 연산자가 나오면
minus
가 거짓이면 저장한 수를 result
에 더하고 minus
가 참이면 저장한 수를 result
에 빼준다.
코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int result = 0;
String numStr = "";
boolean minus = false;
for (int i = 0; i < line.length(); i++) {
char c = line.charAt(i);
if (Character.isDigit(c)) {
numStr += c;
} else {
int num = Integer.parseInt(numStr);
result = minus ? result - num : result + num;
numStr = "";
if (c == '-') {
minus = true;
}
}
}
int num = Integer.parseInt(numStr);
result = minus ? result - num : result + num;
System.out.println(result);
}
}