https://www.acmicpc.net/problem/1541
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split("");
int answer = 0;
boolean prevIsMinus = false;
String num = "";
for(int i=0; i<=str.length; i++){
if(i==str.length || str[i].equals("-") || str[i].equals("+")){ // 연산자라면
if(!prevIsMinus){ // -가 나온적이 없다면
answer += Integer.parseInt(num);
num = "";
}
else{ // - 가 나온적이 있다면 그 다음도 -로 계산
answer -= Integer.parseInt(num);
num = "";
}
if(i!=str.length && str[i].equals("-")) prevIsMinus = true;
}
else{ // 연산자가 아니라 문자라면
num += str[i];
}
}
System.out.println(answer);
}
}
예제 입력1을 보면, 55-50+40 에서 괄호를 55-(50+40) 으로 하면 답이 -35가 되어 최소가 된다.
마이너스가 나오는 순간 괄호를 넣어 그 뒤에 +를 모두 -로 바꿔야 최소를 구할 수 있다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 1806- 부분합 (0) | 2023.01.26 |
---|---|
[JAVA] 백준 11657- 타임머신(벨만 포드) (0) | 2023.01.23 |
[JAVA] 백준 11404번- 플로이드 (0) | 2023.01.20 |
[JAVA] 백준 1202번- 보석 도둑 (0) | 2023.01.16 |
[JAVA] 백준 13305번- 주유소 (0) | 2023.01.13 |