-
[Dev-Ping9] 백준 1541번 - 잃어버린 괄호 (Java)코딩테스트/백준 2022. 1. 9. 22:56
# 문제 설명
괄호는 여러개가 될 수 있다
값을 최소로 만들어야 한다.
'-' 연산자 앞에 다음 '-' 연산자가 나오기전까지 괄호를 쳐주면된다.
단순한 구현문제이다.
# 코드 구현
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Set; import java.util.StringTokenizer; public class Main{ static int[] number; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); List<Integer> minus = new ArrayList<>(); //init int idx=1; for(int i=0;i<input.length(); i++){ if(input.charAt(i)=='-' || input.charAt(i)=='+'){ if(input.charAt(i)=='-'){ minus.add(idx); } idx++; } } minus.add(idx); // 마지막 숫자 뒤 인덱스 input = input.replace("+"," "); input = input.replace("-"," "); String[] numStrings = input.split(" "); number = new int[numStrings.length]; idx = 0; int sum=0; for(String numString : numStrings){ number[idx] = Integer.parseInt(numStrings[idx]); sum+=number[idx++]; } // 최소값이니까 '-' 앞에서 괄호로 최대한 크게 묶으면 됨 // find where to make () // 괄호 한번치는게 아니라 여러번 칠수 있는거였음.... idx= 0; for(int i=0; i<minus.size()-1; i++){ int temp = 0; for(int j=minus.get(i); j<minus.get(i+1); j++){ temp+=number[j]; } sum-= temp*2 ; } System.out.println(sum); } }
728x90'코딩테스트 > 백준' 카테고리의 다른 글
[Dev-Ping9] 백준 13305번 - 주유소 100점 답안 (Java) (서브태스크) (0) 2022.01.10 [Dev-Ping9] 백준 11399번 - ATM (Java) (0) 2022.01.09 [Dev-Ping9] 백준 11047번 - 동전 0 (Java) (0) 2022.01.05 [Dev-Ping9] 백준 1913번 - 회의실 배정 (Java) (0) 2022.01.05 [Dev-Ping9] 백준 14889번 - 스타트와 링크 (Java) (0) 2021.12.30