반응형
- 풀이
이 문제의 경우 예제로 주어진 55-50+40이 55-(50+40)의 형태로 괄호를 씌워야 최솟값을 만들 수 있다는 사실을 알고, -를 기준으로 입력받은 문자열을 하나씩 탐색하며 다음 -를 만날 때까지 숫자들을 더하는 방식을 생각해 시도하였다. 그러나 문제에서 주어진 첫 문자와 마지막 문자는 숫자라는 조건을 보지 못하고 첫 문자에 음수가 입력되는 경우까지 생각하다 너무 복잡해져서 포기했다. 그런데 저 조건을 확인하고 나니 할 수 있을 것 같기도 하다. 결국 이 문제를 풀기 위해서는 -를 기준으로 문자열을 파싱해주면 된다는 것이다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 입력받은 문자열을 '-'을 기준으로 스플릿 해준다.
String n[] = in.next().split("-");
// 최소값이 저장 될 변수.
int sum = Integer.MAX_VALUE;
// 스플릿 된 문자열 배열
for(int i=0;i<n.length;i++) {
int temp = 0;
// 또 다시 '+'를 기준으로 스플릿 해준다.
String cal[] = n[i].split("\\+");
// 추출된 정수들을 모두 더해준다.
for(int j=0;j<cal.length;j++) {
temp+=Integer.parseInt(cal[j]);
}
// 첫 문자라면,
if(sum == Integer.MAX_VALUE)
// 대입한다.
sum = temp;
else
// 첫 문자에서 계속해서 위에서 더해준 값들을 빼주면 된다.
sum-= temp;
}
System.out.println(sum);
in.close();
}
}
반응형