알고리즘

1541 잃어버린 괄호

han1693516 2025. 10. 28. 11:04

 

예를 들어, 10-20+30-40+50이란 식에 괄호를 쳐 최솟값을 만들기 위해서는 10-(20+30)-(40+50) 로 치면 된다.

-를 기준으로 문자열을 나눠 (10, 20+30, 40+50 )초기 값 (10)은 더하고, 이후 더하기 식의 결과는 (50, 90) 은 초기 값에서 빼 답을 구할 수 있다. 

import java.util.*;
import java.io.*;

public class Main {
    
    static int answer;
    
    public static void main (String [] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        StringTokenizer minusSt = new StringTokenizer(str, "-");
        
        answer += calculate(minusSt.nextToken());
        while (minusSt.hasMoreTokens()) {
            answer -= calculate(minusSt.nextToken());
        }
        
        System.out.println(answer);
    }
    
    static int calculate(String str) {
        StringTokenizer plusSt = new StringTokenizer(str, "+");
        int tmp = 0;
        while (plusSt.hasMoreTokens()) {
            tmp += Integer.parseInt(plusSt.nextToken());
        }
        return tmp;
    }
}

 

 

https://www.acmicpc.net/problem/1541

 

'알고리즘' 카테고리의 다른 글

1325 효율적인 해킹  (0) 2025.11.24
1456 거의 소수  (0) 2025.11.23
1744 수 묶기  (0) 2025.10.28
1715 카드 정렬하기  (0) 2025.10.28
1300 K번째 수  (0) 2025.10.27