[백준] 10451번 : 순열 사이클 - Java(자바)

강재원·2022년 11월 24일
0

[코딩테스트] Java

목록 보기
189/200



https://www.acmicpc.net/problem/10451

import java.util.*;
public class Main {
    static ArrayList<Integer>[] arr=new ArrayList[1001];
    static boolean[] check;
    
    static int dfs(int v){
        if(check[v]) return -1;
        check[v]=true;
        dfs(arr[v].get(0));
        return v;
    }
    public static void main(String args[]) {
        Scanner s=new Scanner(System.in);
        for(int i=0;i<arr.length;i++) arr[i]=new ArrayList();
        int t=s.nextInt();
        while(t-->0){
            for(int i=0;i<arr.length;i++) arr[i].clear();
            check=new boolean[1001];
            
            int n=s.nextInt();
            for(int i=1;i<=n;i++) arr[i].add(s.nextInt());
            
            int count=0;
            for(int i=1;i<=n;i++){
                if(i==dfs(i)) count++;
            }
            System.out.println(count);
        }
    }
}
profile
개념정리 & 문법 정리 & 알고리즘 공부

0개의 댓글