알고리즘/백준
[BJ] 1541 잃어버린 괄호 Java
밥은답
2023. 1. 25. 17:49
반응형
백준 1541번 잃어버린 괄호
문제
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
아이디어
- 가장 작은 값을 구하기 위해서는 가장 큰 숫자를 빼면 된다
- 따라서 더하기가 있는 숫자들은 묶어서 더하고, 나머지 숫자는 다 빼면 된다
- split() 함수를 써서 특수문자를 사용할 때 이스케이프 기호 사용해주어야함
코드
package baekjoon;
import java.util.*;
class BJ1541 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String temp = sc.nextLine();
// 제일 작은 수를 만들기 위해서는 제일 큰 수를 빼면 된다
String[] str = temp.split("\\-"); // '-' 부호를 기준으로 나누기
int result = 0; // 계산결과를 담음
for (int i=0; i<str.length; i++) {
// '+' 로 묶인 숫자들은 더 해주어야함
String[] plusArr = str[i].split("\\+");
int calc = 0;
for (String number : plusArr) {
calc += Integer.parseInt(number);
}
// 첫번째 숫자는 무조건 더해야함. (앞뒤는 숫자이기 때문에)
if (i==0) result += calc;
else result -= calc; // 나머지 숫자는 빼야 커짐
}
System.out.println(result);
}
}
반응형