문제
문제해결
import java.util.Scanner;
public class B1541 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
String[] arr = input.split("-");
// 1. 맨 앞의 +연산 처리 결과
String[] tmp = arr[0].split("\\+");//+에는 \\를 붙여줘야 한다함
int first = 0;
for(int i=0;i<tmp.length;i++) {
first += Integer.parseInt(tmp[i]);
}
// 2. 그 후의 모든 값 더하기
int other = 0;
for(int i=1;i<arr.length;i++) {
String[] tmp2 = arr[i].split("\\+");
for(int j=0;j<tmp2.length;j++) {
other += Integer.parseInt(tmp2[j]);
}
}
// 3. 맨 처음값 - 그 후의 모든 값 = 가장 작은 수
System.out.println(first-other);
}
}
- 주어진 문자열을 "+" 연산을 먼저 한 후 "-" 연산을 하면 값을 구할 수 있다
- 가장 첫번째 문자는 숫자기 때문에 제일 처음의 값은 + 이므로
1. 맨 처음 부터 첫번째 "-" 전까지 모든 숫자를 "+" 연산(first)
2. 첫번째 "-" 부터 나머지 모든 숫자를 "+" 연산(other)
3. 위 두 수를 빼면(first-other) 이 식의 최소값을 구할 수 있다
※ "+"는 특수한 기호라 split() 사용시 그냥 사용하면 에러를 발생시킴, 백슬레시 2개를 써줘 이스케이프 처리를 해줘야됨
'[알고리즘] > 백준' 카테고리의 다른 글
자바 - 구현 - 백준 11721 열 개씩 끊어 출력하기 (0) | 2021.03.02 |
---|---|
자바 - 구현 - 백준 14696 딱지놀이 (0) | 2021.03.01 |
자바 - 구현 - 백준 1316 그룹 단어 체커 (0) | 2021.02.28 |
자바 그리디 - 백준 2217 로프 (0) | 2021.02.27 |
자바 그리디 - 백준 16435 스네이크 버드 (0) | 2021.02.25 |