[백준,BOJ 1541] 잃어버린 괄호(JAVA 구현)
코테/백준 온라인 저지(BOJ)

[백준,BOJ 1541] 잃어버린 괄호(JAVA 구현)

반응형

- 풀이

  이 문제의 경우 예제로 주어진 55-50+40이 55-(50+40)의 형태로 괄호를 씌워야 최솟값을 만들 수 있다는 사실을 알고, -를 기준으로 입력받은 문자열을 하나씩 탐색하며 다음 -를 만날 때까지 숫자들을 더하는 방식을 생각해 시도하였다. 그러나 문제에서 주어진 첫 문자와 마지막 문자는 숫자라는 조건을 보지 못하고 첫 문자에 음수가 입력되는 경우까지 생각하다 너무 복잡해져서 포기했다. 그런데 저 조건을 확인하고 나니 할 수 있을 것 같기도 하다. 결국 이 문제를 풀기 위해서는 -를 기준으로 문자열을 파싱해주면 된다는 것이다.  

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
					
		// 입력받은 문자열을 '-'을 기준으로 스플릿 해준다. 
		String n[] = in.next().split("-");
		
		// 최소값이 저장 될 변수.
		int sum = Integer.MAX_VALUE;
		
		// 스플릿 된 문자열 배열
		for(int i=0;i<n.length;i++) {
			int temp = 0;
						
			// 또 다시 '+'를 기준으로 스플릿 해준다.
			String cal[] = n[i].split("\\+");
			
			// 추출된 정수들을 모두 더해준다.
			for(int j=0;j<cal.length;j++) {
				temp+=Integer.parseInt(cal[j]);
			}
			
			// 첫 문자라면,
			if(sum == Integer.MAX_VALUE) 
				// 대입한다.
				sum = temp;
			else
				// 첫 문자에서 계속해서 위에서 더해준 값들을 빼주면 된다.
				sum-= temp;				
		}
		
		System.out.println(sum);
		
		in.close();
	}

}

 

반응형