문제
+, -, 숫자로 이루어진 계산식이 주어지면 가장 계산 결과가 작아지게 괄호를 놓았을 때 그 결과를 출력하라
각 숫자는 5자리를 넘지 않으며, 0으로 시작할 수 있다.
식의 처음과 끝은 무조건 숫자이다.
출처 : 백준 1541번 문제
접근
- 를 만났을때 하나의 그 이후를 모두 -로 묶을 수 있다.
풀이
오랜만에 string to int 를 직접 구현해야해서 번거로웠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static String formula;
static int index, number;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
formula = br.readLine();
boolean isNegative = false;
while (index < formula.length()) {
char c = formula.charAt(index);
if (!Character.isDigit(c)) {
isNegative = isNegative || c == '-';
index++;
} else {
number += convertToNumber(index, isNegative);
}
}
System.out.println(number);
}
private static int convertToNumber(int startIndex, boolean isNegative) {
int numberCumulated = 0;
int multiplier = 1;
while(index < formula.length() && Character.isDigit(formula.charAt(index))) {
index++;
}
for (int i = index-1; i >= startIndex; i--) {
numberCumulated += ((int) formula.charAt(i) -'0') * multiplier;
multiplier *= 10;
}
return isNegative ? numberCumulated * -1 : numberCumulated;
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 2630 색종이 만들기 Java 풀이 (0) | 2024.11.01 |
---|---|
백준 13305 주유소 Java 풀이 (1) | 2024.10.30 |
백준 1931 회의실 배정 Java 풀이 (0) | 2024.10.28 |
백준 11047 동전0 Java 풀이 (0) | 2024.10.28 |
백준 2580 스도쿠 Java 풀이 (2) | 2024.10.02 |