FANMEETING 문제 푸는중 RTE 에러가 뜨는데..

  • fobchs
    fobchs

    시간 초과 라면 이해 하겠지만.. RTE가 뜨는데 정확한 이유를 모르겠네요.
    항상 C++ 하다가 JAVA로 해본거라 뭐가 틀렸는지를 모르겠습니다..
    local로 돌리면 전혀 문제 없어보이는데 말이죠

    문제:
    FANMEETING
    답안 번호 #137685

    import java.util.ArrayList;
    import java.util.Scanner;

    public class Main {

    static int C;
    static String idolinput;
    static String faninput;
    static ArrayList<Integer> idol;
    static ArrayList<Integer> fan;
    static int idolis;
    static int fanis;
    static int counter;
    static int answer;
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        C = input.nextInt();
    
        while (C-- > 0) {
            idolinput = input.next();
            faninput = input.next();
            idolis = idolinput.length();
            fanis = faninput.length();
            idol = new ArrayList<Integer>(idolis);
            fan = new ArrayList<Integer>(fanis);
    
            //1 is male, 0 is female
            for (int i = 0; i < idolis; i++) {
                if (idolinput.charAt(i) == 'M')
                    idol.add(i, 1);
                if (idolinput.charAt(i) == 'F')
                    idol.add(i, 0);
            }
            for (int i = 0; i < fanis; i++) {
                if (faninput.charAt(i) == 'M')
                    fan.add(i, 1);
                if (faninput.charAt(i) == 'F')
                    fan.add(i, 0);
            }
            answer = 0;
            for (int i = 0; i < (fanis-idolis+1); i++) {
                check(0, i, 0);
            }
            System.out.println(answer);
        }
    }
    
    public static void check(int indidol, int indfan, int counter) {
        if (counter == idolis) {
            answer++;
            return;
        }
        if ((idol.get(indidol) == 1) && (fan.get(indfan) == 0) || idol.get(indidol) == 0) {
            check(indidol+1, indfan+1, counter+1);
        }
        else {
            return;
        }   
    }

    }

    감사합니다.


    11년 전
1개의 댓글이 있습니다.
  • JongMan
    JongMan

    check()함수에서 for문 대신 재귀호출을 사용하신 이유가 있나요? 스택이 넘칠 것 같은데요


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