접근

이 문제는 연산을 전부 기억할 필요 없이 단순히 뺄셈의 유무만 확인하면 된다. 만약 '-'가 한번이라도 나온다면 그 뒤는 모두 음수로 처리가 가능하기 때문이다. 그런데 내 코드는 자바의 문자열 처리 기능을 제대로 활용하지 못한 풀이인 것 같다. 자바 문법으로 c++ 코드를 짠듯한 느낌..

 

그래서 다른 분들의 코드를 확인해보니 https://www.acmicpc.net/source/56477572 ← 이 풀이가 훨씬 깔끔하다고 느꼈다. 참고해보면 좋을 것 같다. 

 

코드

package week8;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

        int idx = 0, inputLen = input.length();
        int answer = 0, sum = 0;
        boolean existMinus = false;

        while(idx < inputLen){
            char c = input.charAt(idx++);

            // +나 -인 경우
            if(!Character.isDigit(c)){
                // -가 한번이라도 나왔으면 뒤는 모두 음수 처리 가능
                if(existMinus) answer -= sum;
                else answer += sum;

                if(c == '-') existMinus = true;

                sum = 0;
            }
            // 숫자인 경우
            else {
                sum = sum * 10 + (c - '0');
            }
        }

        if(existMinus) answer -= sum;
        else answer += sum;

        System.out.println(answer);
    }
}

+ Recent posts