JLIS 문제 질문드립니다.

  • qwerthfk
    qwerthfk

    책을 참고하여 문제를 풀어봤습니다.
    계속 오답이 뜨는데 디버기을 해봐도 모르겠습니다 ㅜㅜ
    어디가 문제인가요??

    public class JLIS {

    public static Scanner scan = new Scanner(System.in);
    private static int[] A, B;
    private static int[][] cache;
    
    private static String[] result;
    
    public static void main(String[] args) {
    
        int testNum = scan.nextInt();
        result = new String[testNum];
    
        for(int i=0; i<testNum; i++) {
            result[i] = "";
            int a = scan.nextInt();
            int b = scan.nextInt();
            A = new int[a];
            B = new int[b];
            cache = new int[a+1][b+1];
    
            for(int j=0; j<a; j++) {
                A[j] = scan.nextInt();
            }
    
            for(int k=0; k<b; k++) {
                B[k] = scan.nextInt();
            }
    
            int max = getLIS(-1, -1);
            if( max < 2) {
                max = 0;
            }
            result[i] = result[i].concat(max+"\n");
        }
    
        for(int i=0; i<testNum; i++) {
            System.out.print(result[i]);
        }

    }

    private static int getLIS(int aI, int bI) {
      int ret = cache[aI+1][bI+1];
    
      if(ret != 0) return ret;
    
      ret = 0;
    
      int a = (aI==-1 ? -1 : A[aI]);
      int b = (bI==-1 ? -1 : B[bI]);
      int max = Math.max(a, b);
    
      for(int nextA=aI+1; nextA<A.length; ++nextA) {
        if(max < A[nextA]) {
            ret = Math.max(ret, getLIS(nextA, bI)+1);
        }
      }
      for(int nextB=bI+1; nextB<B.length; ++nextB) {
        if(max < B[nextB]) {
            ret = Math.max(ret, getLIS(aI, nextB)+1);
        }
      }
    
      cache[aI+1][bI+1] = ret;
      return ret;

    }

    }


    10년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.