본문 바로가기
알고리즘/백준 문제풀이

백준 [자바 java] 1541 : 잃어버린 괄호

by 잔디🌿 2023. 7. 23.

    https://www.acmicpc.net/problem/1541

     

    1541번: 잃어버린 괄호

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

    www.acmicpc.net

    식이 주어지고 해당 식에 괄호를 적절히 쳐서 최종 값을 작아지게 만드는 문제이다.

     

    해당 식은 더하기와 빼기만 있다. 이를 최대한 작게 만드려면 최대한 작은 수를 더하고 큰 수를 빼야한다.

    따라서 괄호는 -를 제외하고 전부 넣어주면 된다. 

      ex)

      55 - (50 + 40)

      77 - (55 + 30 + 2) - (44) - (41 + 25)

     

    나는 식을 입력받으면 -를 기준으로 이를 split하고 String배열에 넣어두었다. 그리고 이 배열을 하나씩 탐색하며 더한 값을 전체에서 빼준다( 첫 값은 더해준다.)

     

    풀이코드

    import java.io.*;
    import java.util.*;
    
    public class Main {
    	   
    	
    	public static void main(String arg[]) throws IOException {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		
    		  String[] arr = br.readLine().split("\\-");
    		  int i;
    		  int j;
    		  int k;
    		  int fin = 0;
    		  String[] n;
    		  for(i = 0;i<arr.length;i++) {
    			  k=0;
    			  n = arr[i].split("\\+");
    			  for(j = 0;j<n.length;j++) {
    				  k+=Integer.parseInt(n[j]);
    				  
    			  }
    			  if(i == 0) {
    			  fin +=k;
    		  }
    			  else {
    				  fin-=k;
    			  }
    				  
    	}
    		  System.out.printf("%d",fin);
    	}
    }