본문 바로가기

[BOJ] - JAVA

[백준] 1541 : 잃어버린 괄호 JAVA 풀이

예를 들어 10 - 20 + 30 이라는 식이 주어졌을 때

(10 - 20) + 30을 계산하면 20이 나오고

10 - (20 + 30)을 계산하면 -40이 나온다.

 

이처럼 괄호의 위치에 따라 결과값이 달라질 때 최소값이 되도록 하라는 건데,

+를 사이에 두고 있는 수들(20, 30)을 먼저 더한 후에 -의 앞에 있는 수들에서 빼주면 된다.

 

그러려면 우선 식을 -를 기준으로 쪼개줘야 하는데, split() 메서드를 사용하면 된다.

 

이 예시의 경우 10과 20+30로 나뉘고,

20 + 30을 다시 +를 기준으로 쪼개서 20과 30을 더해 50을 만들고 그걸 10에서 빼주면 된다.

 

+를 기준으로 식을 쪼갤 때 주의해야 할 점은 str.split("+")라고 쓰면 오류가 나므로

str.split("\\+")라고 써줘야 한다.

(+가 덧셈기호라서 일반 문자들처럼 쓸 수 없는 것 같다.)

 

import java.io.*;
import java.util.*;
class Exercise {
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] arr = (br.readLine()).split("-");
		
		int res = 0;
		
		for(int i=0;i<arr.length;i++) {
			int sum = 0;
			String[] addition = arr[i].split("\\+");
			
			for(int j=0;j<addition.length;j++) {
				sum += Integer.parseInt(addition[j]);
			}
			
			if(i==0) {
            // 입력되는 수는 모두 양수라서 첫번째 수는 무조건 더해줘야 함
				res += sum;
			}
			else {
				res -= sum;
			}
		}
		System.out.println(res);
	}
}