프로그래머스 67257 수식 최대화 JAVA

sundays·2022년 11월 24일
0

문제

수식 최대화

풀이

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));

오늘도 멍청함을 해결했다...사실 이것밖에 없을것 같기는 했다
인덱스 문제나, 아니면 숫자 연산 부분...^^ 연습하자 연습해.....

전체 코드

전체 코드

profile
develop life

0개의 댓글