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

이 문제를 풀기위해 생각을 해보자 뭔가 처음보는 듯한 유형이다.
일차원적인 생각은 최소로 만들기위해서는 -뒤에 절대값이 최대한 크게 괄호로 묶어주면 될 것이라고 생각된다.
package test;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int sum = Integer.MAX_VALUE;
Scanner sc =new Scanner(System.in);
String[] n = sc.next().split("-");
for(int i=0;i<n.length;i++) {
int tmp = 0;
String[] add = n[i].split("\\+");
for(int j = 0; j < add.length; j++) {
tmp += Integer.parseInt(add[j]);
}
if(sum == Integer.MAX_VALUE) {
sum = tmp;
}
else {
sum -= tmp;
}
}
System.out.println(sum);
}
}
어떻게 해야할지 감이 안잡혀 다른 사람들이 짠 코드를 참고하였다.
문자열에서 -가 나오고 다음 -가 나오기전까지의 +들은 -로 바뀐다 결국 -가 나오는 시점부터 뒤는 쭉 -값이다.
신박한 문제였다 나름 재미있었고 이런 문제가 다시 나온다면 혼자만의 힘으로 풀어봐야겠다.

'알고리즘 with 자바 > 그리디' 카테고리의 다른 글
| 백준 10162 : 전자레인지 - JAVA (0) | 2021.03.17 |
|---|---|
| 백준 2217 : 로프 - JAVA (0) | 2021.03.17 |
| 백준 5585 : 거스름돈 - JAVA (0) | 2021.03.16 |
| 백준 11047 : 동전 0 - JAVA (0) | 2021.02.16 |
| 백준 11399 : ATM - JAVA (0) | 2021.02.16 |