[백준 / 실버2] 1541 잃어버린 괄호

wannabeking·2022년 7월 9일
0

코딩테스트

목록 보기
38/155

문제 보기



사용한 것

  • 문자열 파싱


풀이 방법

  • 약간 넌센스 문제인거 같다.
  • 괄호로 표현해서 가장 작은 값을 구하는건 '-'가 한번 나오고 부터 계속해서 빼면 된다.
  • 예를 들어 "1+2-3+4+5-6+7"이 주어진다고 가정해 보자.
    • 1+2-(3+4+5)-(6+7)이 최소이다.
    • 마이너스가 등장하면 다시 마이너스가 등장할 때까지 괄호로 계속 더해준 뒤 한꺼번에 빼주고, 다시 마이너스가 등장하면 똑같이 반복하면 된다.
    • 결국 마이너스가 등장하기 전까지 모두 더해주고 마이너스가 등장한 이후로는 어떤 연산자가 나오든 계속해서 빼주면 된다.
  • minus에 '-'가 나왔는지 값을 저장한다. 처음엔 false
  • 반복문을 돌면서 연산자가 나오기 전까지 수를 저장한 뒤 연산자가 나오면 minus가 거짓이면 저장한 수를 result에 더하고 minus가 참이면 저장한 수를 result에 빼준다.


코드

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();

        int result = 0;
        String numStr = "";
        boolean minus = false;
        for (int i = 0; i < line.length(); i++) {
            char c = line.charAt(i);
            if (Character.isDigit(c)) {
                numStr += c;
            } else {
                int num = Integer.parseInt(numStr);
                result = minus ? result - num : result + num;

                numStr = "";

                if (c == '-') {
                    minus = true;
                }
            }
        }

        int num = Integer.parseInt(numStr);
        result = minus ? result - num : result + num;

        System.out.println(result);
    }
}


profile
내일은 개발왕 😎

0개의 댓글