DFS 문제인데 조금만 응용되도 허우적 대버리는 듯^^;; 정확성에서 날라갔는데
private static void operation(ArrayList<String> order) {
ArrayList<String> arr2 = (ArrayList<String>) arr.clone();
for (int j = 0; j < order.size(); j++) {
for (int i = 0; i < arr2.size(); i++) {
if (Objects.equals(arr2.get(i), order.get(j))) {
int a = Integer.parseInt(arr2.get(i - 1));
int b = Integer.parseInt(arr2.get(i + 1));
String operation = arr2.get(i);
arr2.remove(i - 1);
arr2.remove(i - 1);
arr2.remove(i - 1);
long result = calc(a, b, operation);
arr2.add(i - 1, String.valueOf(result));
i = i - 1;
}
}
}
answer = Math.max(answer, Math.abs(Long.parseLong(arr2.get(0))));
}
remove 할때 아무래도 다음 인덱스로 넘어갈때 잘안되는 것 같아서 내부 for문을 지워줬다
private static void operation(ArrayList<String> order) {
ArrayList<String> arr2 = (ArrayList<String>) arr.clone();
for (int j = 0; j < order.size(); j++) {
String o = order.get(j);
while(arr2.contains(o)) {
int i = arr2.indexOf(o);
int a = Integer.parseInt(arr2.get(i - 1));
int b = Integer.parseInt(arr2.get(i + 1));
String operation = arr2.get(i);
arr2.remove(i - 1);
arr2.remove(i - 1);
arr2.remove(i - 1);
long result = calc(a, b, operation);
arr2.add(i - 1, String.valueOf(result));
}
}
answer = Math.max(answer, Math.abs(Long.parseLong(arr2.get(0))));
}
이래도 안되네...여전히 11, 27, 28, 29 가 안되고 있다.
다른 분들 코드를 보면 연산 부호와 숫자는 나눠서 담는데 그 이유일지도 모르겠다.
..................
아 이제 이유를 알았다
아니 long 형을 담을건데 왜 int 형으로 받았지 ^^???
long a = Long.parseLong(arr2.get(i - 1));
long b = Long.parseLong(arr2.get(i + 1));
오늘도 멍청함을 해결했다...사실 이것밖에 없을것 같기는 했다
인덱스 문제나, 아니면 숫자 연산 부분...^^ 연습하자 연습해.....