Java/Algorithm

[Java-Algorithm] 백준 1541 잃어버린 괄호 풀이

Jeong Jeon
반응형

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

풀이 :

처음에는 괄호의 위치를 -기준으로 , 괄호가 나온 갯수로 풀이를 해보려고했다.

하지만 더 간단한 방법이 있을것 같아 생각해보았는데, -기준 + 기준으로 묶어서 더하고 빼고 하면 될것 같았다.

결국 괄호의 위치가 뺄셈을 할 수 있게 만들어주는개념으로 괄호를 사용한다는 것을 배제 하였다.

 

순서

1). 처음에는 -기준으로 쪼갠다.

2). - 기준으로 쪼개지면, 뭉쳐있는 아이들은 전부 + 로 더하는 아이들이다.

    그러므로, 다 더한뒤 -를 붙여주면 가장 작은 수가 되지 않는가!!!

3). 여기서 문제를 제대로 안읽어본 티가 났었다. 첫번째와 마지막문자는 숫자이다!!!! 즉 처음에는 -나 +가 나올수 없다는것..! 그러므로 처음나온 숫자는 어쩔수없이 무조건 최종값에서 +되있는 값이다.

 

자 그럼 이 내용을 기준으로 코드화 해보자.

public static void main(String[] args) throws IOException{
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    String[] ar = br.readLine().split("-");
	    int result = 0;
	    for(int i =0; i<ar.length; i++) {
	    	int tmp = 0;
	    	String[] plusAr = ar[i].split("\\+");
	    	for (int j = 0; j < plusAr.length; j++) {
				tmp += Integer.parseInt(plusAr[j]);
			}
	    	if(i==0) {
	    		result+=tmp;
	    	}else {
	    		result-=tmp;
	    	}
	    }
	    System.out.println(result);
	}

 

** 1).split의 기준점을 잘보자..!

** 2). i==0 즉 처음나온 숫자는 더해주고 시작한다.

 

 

반응형