알고리즘/백준 Baekjoon
백준 1541번 잃어버린 괄호(JAVA) - 그리디
꾸준함
2023. 2. 15. 21:08
백준 1541번
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
문제설명
문자로된 식을 입력 받고 그 해당 식의 값이 최소로 만드는 괄호의 위치를 찾아서 계산 후에
최솟값을 출력한다.
접근
1. - 를 기준으로 문자열을 나눈다.
2. 나눠진 문자열들을 '+' 기준으로 나눈다음 각각 다 더한다.
3. 첫번째 값은 더해주고 나머지는 뺴주면서 최솟값으로 만든다.
코드
import java.io.*;
import java.util.*;
public class Main{
public static void main(String args[]) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] sb = bf.readLine().split("-");
int res = 0 ;
for(int i=0;i<sb.length;i++){
int temp=0;
String[] add = sb[i].split("\\+");
for(int j=0;j<add.length;j++){
temp+= Integer.parseInt(add[j]);
}
if(i==0){
res += temp;
}else{
res -= temp;
}
}
System.out.println(res);
}
}
풀이
최솟값이 되려면 큰 수들을 빼주면 되는데 +를 먼저 수행한다음 -를 수행한다면 최솟값이 나온다.
>> 처음 풀 때 split함수에서 "+"를 기준으로 split("+")를 사용해서 값이 이상하게 나왔다. << 주의