알고리즘 문제풀이

Q9496 텀프로젝트(시간초과로 실패)

JihyunLee 2019. 5. 7. 17:40
반응형
package graph;
import java.util.*;
public class Q9496 {
	static int num=0;
	static int[] arr;
	static int[] visit;
	static int sum=0;
	static int index=0;
	static ArrayList<Integer> al;
	
	public static void main(String[] args) {
		
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int test = Integer.parseInt(scan.nextLine());
		while(test>0) {
			test--;
			sum=0;
			num = Integer.parseInt(scan.nextLine());
			arr = new int[num+1];
			visit = new int[num+1];
			String s = scan.nextLine();
			StringTokenizer st = new StringTokenizer(s," ");
			for(int i=1; i<=num; i++) {
				arr[i] = Integer.parseInt(st.nextToken());
			}
			for(int i=1;i<=num; i++) {
				al = new ArrayList<Integer>();
				if(visit[i]==0)	find(i);
			}
			System.out.println(num-sum);
			
		}
		
	}
	
	public static void find(int i) {
		visit[i] = 1;
		al.add(i);
		if(arr[i] == i) {
			sum += 1;
			return;
		}
		index =  al.indexOf(arr[i]);
		if(index!=-1){
			int n= al.size()-index;
			sum = sum + n;
			return;
		}
		else {
			int ni = arr[i];
			if(visit[ni]==0) find(ni);
		}
}

}
반응형