[Algorithm /백준] 잃어버린 괄호
2023. 11. 6. 00:00ㆍAlgorithm/JAVA
[문제]
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
[입력]
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
[문제 해결 - 그리디]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String [] strArr = str.split("-"); //문자열을 -에 따라 나눔.
Main ma = new Main();
int sum = 0;
for(int i = 0 ; i <strArr.length ; i++) {
if(i == 0)
sum += ma.greedy(strArr[i]);
else
sum -= ma.greedy(strArr[i]);
}
System.out.println(sum);
}
public int greedy(String str) {
String[] greedySumArr = str.split("\\+");
int minusSum = 0;
for(int i = 0 ; i < greedySumArr.length;i++) {
minusSum+= Integer.parseInt(greedySumArr[i]);
}
return minusSum;
}
}
+) 거의 다 풀어놓고 상당히 많이 헤매였던 문제.
이상하게 원래 작성했던 코드가
모든 찾아본 반례 테스트 케이스를 통과 했음에도 불구하고..
통과가 안되는 문제가 발생 ㅠㅠ
그리디라 그런건지는 모르겠지만...
백준풀다 보니 느낀것이 효율적인 코드가 아닌 필요없는 문장이 많으면
케이스 통과가 안되나? 라는 생각이 들었다.
무작정 푼다고해서 통과시켜주지 않는 건가.
항상 문제를 더 심플하고 간결하게 짜야겠다는 마음가짐을 가져본다.
'Algorithm > JAVA' 카테고리의 다른 글
[Algorithm /백준] 회의실 배정 (0) | 2023.11.07 |
---|---|
[Algorithm /백준] 1,2,3 구하기 (0) | 2023.11.06 |
[Algorithm /인프런] 팩토리얼 (0) | 2023.11.05 |
[Algorithm /프로그래머스] 에너지 드링크 (0) | 2023.11.05 |
[Algorithm /백준] 거스름돈 (0) | 2023.11.05 |