강의로 돌아가기
b-sseung

정확도 테스트 케이스 1번만 틀립니다..

제발 테스트케이스 예제 부탁드립니다...
아니면 코드 내에 오류일까요..?

작성중인 코드―Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.util.*;
class Solution {
    int[][] min, max;
    int[] list;
    public int solution(String arr[]) {
        int size = arr.length/2+1;
        min = new int[size][size];
        max = new int[size][size];

        list = new int[size];

        for (int i = 0; i < arr.length; i+=2) {
            int num = Integer.parseInt(arr[i]);
            if (i == 0) {
                list[i/2] = num;
            } else {
                list[i/2] = arr[i-1].equals("+") ? num : -num;
            }
        }

        for (int i = size-1; i >= 0; i--) {
            for (int j = i; j < size; j++) {
                if (i == j) {
                    min[i][j] = list[i];
                    max[i][j] = list[i];
                } else {
                    min[i][j] = Integer.MAX_VALUE;
                    max[i][j] = Integer.MIN_VALUE;

                    func(min[i][j-1], list[j], i, j);
                    func(max[i][j-1], list[j], i, j);
                    func(list[i], min[i+1][j], i, j);
                    func(list[i], max[i+1][j], i, j);

                }
            }
        }

        return max[0][size-1];
    }

    public void func(int a, int b, int x, int y) {
        if (list[x] < 0 && a < 0) {
            min[x][y] = Math.min(min[x][y], Math.min(a-b,a+b));
            max[x][y] = Math.max(max[x][y], Math.max(a-b,a+b));
        } else {
            min[x][y] = Math.min(min[x][y], a+b);
            max[x][y] = Math.max(max[x][y], a+b);
        }

    }
}
1 개의 답변
b-sseung

해결했습니다ㅠㅠㅠㅠㅠㅠ
테스트케이스 반례는 ["5", "-", "10", "+", "1", "+", "2", "-", "4"], -4 입니다

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.