코딩 테스트

(Java) 백준 1541 - 잃어버린 괄호

로승리 2022. 5. 28. 05:58

괄호를 어디에 치느냐에 따라 값이 달라지기 때문에 최솟값을 얻으려면

-를 기준으로 문자열을 나눠 모두 더한뒤 마지막에 -연산을 수행하면 된다.

설계는 어렵지 않았는데 문자열을 분리하는게 쉽지 않았다.

Stringtokenizer를 이용하여 문제를 풀었다.

 

최종 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 전체 계산값을 저장하기 위한 변수
        int sum = 0;
        // 첫번째 값만 저장하기 위한 카운트
        int cnt = 0;
        // -기준으로 문자열 분리
        StringTokenizer st = new StringTokenizer(br.readLine(), "-");
        while (st.hasMoreTokens()) {
            int temp = 0;
            // + 기준으로 문자열 분리
            StringTokenizer st2 = new StringTokenizer(st.nextToken(), "+");
            // + 기준으로 나눠진 토큰을 모두 더하기
            while (st2.hasMoreTokens()) {
                temp += Integer.parseInt(st2.nextToken());
            }
            cnt++;
            if(cnt == 1) {
                sum += temp;
            } else {
                sum -= temp;
            }
        }
        System.out.println(sum);
    }
}