코딩테스트/백준

백준 1541 잃어버린 괄호

Debin 2021. 10. 6.
반응형

문제 제시

 

 

사용 언어는 자바이다.

 

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

 

해결법 

예를 들어 20-30+30+40-20

우리는 괄호를 쳐서 제일 작은 수를 만들어야 한다. 20-(30+30+40)-20

 

1. 일단 문자열을 받는다.

2. 문자열 '-' 을 기준으로 나눈다.

3. 길이가 2 이상인 배열 인덱스 요소를  '+'를 기준으로 나눈 후 나눈 것 들을 더하고 더한 값을 해당 인덱스에 넣는다.

4. 이후 모든 배열의 값들을 계산하면 결과가 나온다.

 

아래는 해결 코드이다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
	public static void main(String[] args)throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String[] str=br.readLine().split("-");
		
		for(int i=0;i<str.length;i++) {
			int sum=0;
			if(str[i].length()>2) {
				String[] str2=str[i].split("\\+");
				for(int j=0;j<str2.length;j++) {
					sum+=Integer.parseInt(str2[j]);
				}
				str[i]=String.valueOf(sum);
			}
			
		}
		
		int result= Integer.parseInt(str[0]); 
		for(int i=1;i<str.length;i++) {
			result-=Integer.parseInt(str[i]);
		}
		System.out.println(result);
	}
}
반응형

댓글