본문 바로가기

백준문제풀이

백준 1541 자바(java) 잃어버린 괄호

문제

세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

입력

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.

출력

첫째 줄에 정답을 출력한다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String num = new String();
		num = sc.next();
		String[] minus = num.split("-");
		int count = 100000;
		for(int i = 0; i<minus.length; i++) {
			int temp = 0;
			temp += sumPlus(minus[i]);
			if(count == 100000) {
				count = temp;
			}
			else {
				count -= temp;
			}
		}
		System.out.println(count);

	}
	static int sumPlus(String a){
		String sumArray[] = a.split("\\+");
		int count =0;
		for(int i=0; i<sumArray.length;i++) {
			count += Integer.parseInt(sumArray[i]);
		}
		return count;
	}
}

풀이

+로 묶인 예를들어 55+40 이 있으면 이 숫자들을 괄호로 묶은후 빼면 최솟값을 얻을수 있기 때문에

-로 split을 해준 후 +로 split한 값을 더한 후에 뺄셈을 해준다.