-
[백준/JAVA] 1541번: 잃어버린 괄호Algorithm 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
'Algorithm' 카테고리의 다른 글
[백준/JAVA] 21314번: 민겸 수 (0) 2024.07.19 [백준/JAVA] 1931번: 회의실 배정 (0) 2024.07.18 [백준/JAVA] 16953번: A → B (0) 2024.07.18 [백준/JAVA] 13305번: 블로그2 (0) 2024.07.17 [백준/JAVA] 13305번: 주유소 (0) 2024.07.17