출처 : https://www.acmicpc.net/problem/1541
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. 실수가 줄어들었는가 ?