ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1541 잃어버린 괄호
    백준/파싱 2022. 6. 28. 16:44

     

     

    1. 풀이

     

    다른 사람 블로그를 참고했다.

     

    예를 들어서 설명하겠다.

     

    10 + 20 - 30 + 40 - 50 + 60

     

    괄호를 쳐서 주어진 입력의 결과를 최소값으로 만들라고 했다.

    핵심은 - 부호를 이용하는 것이다.

    즉, 위의 예제에서는 10 + 20 - (30 + 40) - (50 + 60) 이 된다.

    이처럼 - 부호 뒤에 ( 괄호를 치고

    다음 - 부호가 나오기 전에 ) 괄호를 쳐주면 된다. 

    즉, 음수값이 크게 만들면 된다.

     

     

     

    단계 1

     

    제일 먼저 입력값을 String 으로 받는다.

     

     

     

    단계 2

     

     - 부호를 기준으로 입력값을 분리해준다.

     

     

     

    단계 3

     

    분리된 입력값을 각각 + 연산한다.

     

     

     

    단계 4

     

    맨 앞에 있는 값 제외하고 모두 - 연산하면 된다.

    즉, 30 - 70 - 110 = -150 

    이 정답이 된다.

     

     

    2. 최종 코드

     

     

     

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Main {
    	
    	public static void main(String[] args) throws IOException {
    		
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		String input = br.readLine();
    		String a[] = input.split("-");
    		
    		int result = 0;
    		boolean first = true;
    		
    		for(int i =0; i<a.length; i++) {
    			
    			String b[] = a[i].split("\\+");
    			
    			for(int j =0; j<b.length; j++) {
    				
    				int sum = 0;
    				sum+=Integer.parseInt(b[j]);
    	
    			
    			if(first) {
    				result+=sum;
    			}else {
    				result-=sum;
    			}
    			
    			}
    			
    			first  = false;
    		}
    		
    		System.out.println(result);
    	}
    }

     

     

    코드에 보면 split 으로 문자열을 배열값으로 바꿀 때

    split("\\+") 

    로 사용하고 있다.

     

    + 기호를 기준으로 나누려고 하는 것인데,

    split("+") 이렇게만 하면 인식을 못한다고 한다.

    그래서 앞에 \\ 를 넣어준다.

     

     

    참고 블로그 :

    https://st-lab.tistory.com/148

     

    '백준 > 파싱' 카테고리의 다른 글

    22867 종점  (0) 2022.06.09

    댓글

Designed by Tistory.