접근
이 문제는 연산을 전부 기억할 필요 없이 단순히 뺄셈의 유무만 확인하면 된다. 만약 '-'가 한번이라도 나온다면 그 뒤는 모두 음수로 처리가 가능하기 때문이다. 그런데 내 코드는 자바의 문자열 처리 기능을 제대로 활용하지 못한 풀이인 것 같다. 자바 문법으로 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);
}
}
'Algorithm' 카테고리의 다른 글
[백준] 1713: 후보 추천하기 JAVA (0) | 2023.03.14 |
---|---|
[백준] 5525: IOIOI JAVA (0) | 2023.03.04 |
[백준] 17472: 다리 만들기 2 JAVA (0) | 2023.02.27 |
[백준] 10423: 전기가 부족해 JAVA (0) | 2023.02.27 |
[백준] 4386: 별자리 만들기 JAVA (0) | 2023.02.26 |