Algorithm/Java
[백준/JAVA] 1541번: 잃어버린 괄호
dbfl9911
2024. 7. 18. 14:04
반응형
https://www.acmicpc.net/problem/1541
- 정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 괄호 쳐서 식의 값을 최소로
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine(); // "55-50+40"
// 1. '-' 기준으로 문자열 분할
String[] sub = input.split("-"); // ["55", "50+40"]
int result = 0;
for(int i = 0; i < sub.length; i++) {
int sum = 0;
// 2. '+' 기호를 기준으로 나눔
String[] add = sub[i].split("\\+");
// ["55"]
// ["50", "40"]
for(int j = 0; j < add.length; j++) {
sum += Integer.parseInt(add[j]);
// sum = 55
// sum = 90
}
if(i == 0) {
result += sum;
}else {
result -= sum;
// result = 55 - 90 = -35
}
}
System.out.println(result); // -35
}
}
- 코드 설명
1. 식 분할하기:
String[] sub = input.split("-");
입력된 문자열을 '-' 기준으로 분할합니다. 이를 통해 나눠진 각 부분은 더하기 연산의 묶음이 됩니다.
2. 덧셈 묶음 분할 및 합산:
// 2. 첫 번째 부분은 무조건 더해준다.
for (int i = 0; i < sub.length; i++) {
int sum = 0;
// 3. '+'를 기준으로 문자열을 나눈다.
String[] add = sub[i].split("\\+");
// 4. 각 덧셈 묶음을 더한다.
for (int j = 0; j < add.length; j++) {
sum += Integer.parseInt(add[j]);
}
// 5. 첫 번째 부분은 결과에 더하고, 나머지는 뺀다.
if (i == 0) {
result += sum;
} else {
result -= sum;
}
}
예제 입력 1: 55-50+40
- substractions = ["55", "50+40"]
- 첫 번째 부분 "55"는 tempSum = 55
- 두 번째 부분 "50+40"는 tempSum = 90
- result = 55 - 90 = -35
예제 입력 2: 10+20+30+40
- substractions = ["10+20+30+40"]
- 첫 번째 부분 "10+20+30+40"는 tempSum = 100
- result = 100
예제 입력 3: 00009-00009
- substractions = ["00009", "00009"]
- 첫 번째 부분 "00009"는 tempSum = 9
- 두 번째 부분 "00009"는 tempSum = 9
- result = 9 - 9 = 0
반응형