https://www.acmicpc.net/problem/1541
풀이
먼저 "-"를 기준으로 문자열을 쪼개 준다
55-50+40의 경우 문자열을 쪼개면
55와 50+40으로 쪼갤 수 있으며
String 배열에 {"55", "50+40"}으로 담을 수 있다
이제, 배열의 0번 인덱스부터 뒤로 가면서 배열의 원소에 있는 수식을 계산하고, 계산한 결과를 빼주면 된다
0번 인덱스인 55에서 다음 원소인 50+40을 계산하고, 계산 결과인 90을 빼주면 된다
더하기만 있는 수식을 계산하는 함수이다
static int sumFormula(String s) {
String[] ss = s.split("\\+");
int sum = 0;
for (int i = 0; i < ss.length; i++) {
sum += Integer.parseInt(ss[i]);
}
return sum;
}
"50+40"을 입력으로 받았다면
"+"를 기준으로 문자열을 쪼개어서 문자열 배열에 담아준 뒤
문자열 배열에 있는 모든 수를 더하여 return 해준다
처음에 "-"를 기준으로 문자열을 쪼개고
첫 인덱스에 있는 숫자부터 시작하여
String[] ss = s.split("-");
int sum = sumFormula(ss[0]);
나머지 원소들을 빼준다
for (int i = 1; i < ss.length; i++) {
sum -= sumFormula(ss[i]);
}
전체 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static int sumFormula(String s) {
String[] ss = s.split("\\+");
int sum = 0;
for (int i = 0; i < ss.length; i++) {
sum += Integer.parseInt(ss[i]);
}
return sum;
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
// -를 기준으로 자른다
String[] ss = s.split("-");
int sum = sumFormula(ss[0]);
for (int i = 1; i < ss.length; i++) {
// +를 기준으로 수를 나누어서 더한 결과를 더한다
sum -= sumFormula(ss[i]);
}
System.out.println(sum);
}
}
'프로그래밍 > 백준' 카테고리의 다른 글
백준 1043 거짓말 with 자바 (1) | 2022.10.30 |
---|---|
백준 2636 치즈 with 자바 (0) | 2022.10.28 |
백준 5430 AC with 자바 (0) | 2022.10.25 |
백준 2096 내려가기 with 자바 (0) | 2022.10.24 |
백준 7662 이중 우선순위 큐 with 자바 (1) | 2022.10.23 |