알고리즘/백준

백준 1541번 JAVA

리콜 2023. 9. 30. 20:52

 

문제의 목적은 최솟값을 만드는 것이다.

최솟값을 만드려면 더하기가 아닌 빼기에 집중해야한다.

최대한 모아모아 한번에 빼야 최솟값이 될 수 있다.

 

따라서 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