java소스 제출시 런타임 오류(RTE)가 발생합니다.

  • choi4780
    choi4780

    Picnic 문제에 대한 java소스 풀이인데요.
    런타임오류(RTE)가 발생합니다.
    어디서 잘못되었는지 확인할 방법이 없어서요. 답변부탁드리겠습니다.

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayDeque;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Queue;
    
    
    public class Main {
        static int T;
        static int areFriends[][];
        static int taken[];
        static int Answer;
    
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            T= Integer.parseInt(br.readLine());
            int N, m;
            for(int t = 0; t<T; t++){
                String input = br.readLine();
                //학생수
                N = Integer.parseInt(input.split("\\s")[0]);
                //짝수
                m = Integer.parseInt(input.split("\\s")[1]);
    
    
                areFriends= new int[10][10];
                taken= new int[N];
    
                String[] CoupleInput = br.readLine().split("\\s");
    
                //짝 정보를 받아서 coupleList라는 배열에 넣음
                Queue<Integer> coupleList = new ArrayDeque<Integer>();
                for(String num : CoupleInput){
                    coupleList.add(Integer.parseInt(num));
                }
    
                //coupleList 큐에서 하나씩 빼서 친구여부 2차배열에 1(친구여부이면)을 삽입
                for(int i=0; i<m; i++){
                    int x=coupleList.poll();
                    int y = coupleList.poll();
                    areFriends[x][y]=1;
                    areFriends[y][x]=1;
                }
    
    
                Answer = findPair(taken);
    
                System.out.println(Answer);
            }
        }
        private static int findPair(int[] taken) {
            int ret=0;
            int firstFree=-1;
            for(int i=0; i<taken.length; i++){
                //아직 짝이 안지어진 사람이 있다면 firstFree를 그 사람 번호로 지정
                if(taken[i]==0){
                    firstFree=i;
                    break;
                }
            }
    
            if(firstFree==-1) return 1;
    
            for(int i=firstFree+1; i<taken.length; i++){
                if(taken[firstFree]==0 && taken[i]==0 && areFriends[firstFree][i]==1){
                    taken[firstFree]=taken[i]=1;
                    ret+=findPair(taken);
                    taken[firstFree]=taken[i]=0;
                }
            }
            return ret;
        }
    }
    

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