
문제의 목적은 최솟값을 만드는 것이다.
최솟값을 만드려면 더하기가 아닌 빼기에 집중해야한다.
최대한 모아모아 한번에 빼야 최솟값이 될 수 있다.
따라서 StringTokenizer로 -를 기준으로 분리 해준뒤 또 그안에서 +를 기준으로 나누어 더하고 sum에서 빼주었다.
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 {
//55-50+40
//최소로 최대한 많이 뭉쳐서 빼야한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "-"); //빼기로 분해
int sum = Integer.MAX_VALUE;
//55 55+40
while(st.hasMoreTokens())
{
StringTokenizer st2 = new StringTokenizer(st.nextToken(), "+"); //더하기로 나누기
int tmp = 0;
while(st2.hasMoreTokens())
{
tmp += Integer.parseInt(st2.nextToken()); //묶음을 다 더해준다.
}
if(sum == Integer.MAX_VALUE) // 더하기 시작이라면
{
sum = tmp;
}else{
sum -= tmp;
}
}
System.out.println(sum);
}
}반응형
'알고리즘 > 백준' 카테고리의 다른 글
| 백준 14888번 Java (0) | 2023.10.10 |
|---|---|
| 백준 14501번 Java (0) | 2023.10.02 |
| 백준 1260번 JAVA (0) | 2023.09.30 |
| 백준 4375번 1 C++ (0) | 2023.06.13 |
| 백준 10815번 C++ (0) | 2023.06.13 |