Problem Solving/Baekjoon

[boj] 1541번: 잃어버린 괄호

kimdozzi 2023. 1. 24. 12:23

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

 

 

1. 문제 설명 

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 문제다.

 

 


2. 접근 방식 

여러 시도를 했었다... 구현 실력이 부족하여 실패했다.......

 

 


3. 주석 달기 (변수 설명, 각 줄마다 문장으로 설명, 함수 설명)

package BOJ;

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

public class BOJ1541 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] s = br.readLine().split("-");

        ArrayList<Integer> arr = new ArrayList<Integer>();
        for(int i = 0; i < s.length; i++) {
            String[] store = s[i].split("\\+");
            int num = 0;
            for (int j = 0; j < store.length; j++)
                num += Integer.parseInt(store[j]);
            arr.add(num);
        }
        int tmp =  arr.get(0);
        for (int i = 1; i < arr.size(); i++) {
            tmp -= arr.get(i);
        }
        System.out.println(tmp);
        br.close();
    }
}

 


4. 분석

1. Time : O(N^2)
2. Space :
3. 소요시간 : 1시간 
4. 제출 횟수 (무작정 제출하기 않기)  : 5회 ...
5. 어려웠던 부분과 해결한 방법 : 두 개의 스택으로 최솟값을 만들어보려 했으나 쉽지 않았다. 많은 문제를 풀어보며 다양한 접근 방식을 알게 되는게 참 중요하다는 생각이 든 문제였다. 
6. 실수가 줄어들었는가 ?