[백준] 1541 잃어버린 괄호

장철현·2023년 11월 21일
0

백준

목록 보기
21/80

링크

1541 잃어버린 괄호

문제

풀이

이 문제는 괄호를 적절하게 쳐서 가장 작은 수를 만들면 된다

예를들어 55 - 50 + 40이 있으면 55 - (50 + 40) = -35가 되고 제일 작은 숫자이다

+--+, +-+- 등 여러가지 생각해봤는데 -가 나온 시점부터 그냥 빼버리면 가장 작은 수가 된다

예를들어
55 - 50 + 40 - 20 - 10 하면 그냥 마이너스가 나온 시점부터 다 빼버리면 된다.
55 - 50 + 40 - 20 + 10 이것도 맨 마지막 + 10은 앞에서 괄호 묶어버리면 -가 되기 때문에 문제없다

코드

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

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();


        // 부호가 마이너스일때까지 빼주면 된다.
        int answer = 0;

        boolean isMinus = false;
        String number = "";
        for(int i=0;i<str.length();i++){
            String element = str.charAt(i) + "";
//            System.out.println(element);

            //부호일때
            if(element.equals("+") || element.equals("-")){

                if(isMinus){
                    answer -= Integer.parseInt(number);
                    number = "";
                } else{
                    answer += Integer.parseInt(number);
                    number = "";
                }

                if(element.equals("-")){
                    isMinus = true;
                }

//                System.out.println("answer = " + answer);

            }
            // 숫자일때
            else{
                number += element;
            }


//            System.out.println("number = " + number);

        }

        if(isMinus){
            answer -= Integer.parseInt(number);
        } else{
            answer += Integer.parseInt(number);
        }


        System.out.println(answer);

    }

}

0개의 댓글