PS/BOJ

백준 10451 순열 사이클 JAVA

_룰루 2021. 4. 10. 15:33

 

 

10451번: 순열 사이클

1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\  3

www.acmicpc.net

 

 

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

public class Main {

	static int t, n;
	static int[] arr; //배열
	static boolean[] checked; //방문 여부
	static int cnt; //사이클 갯수
	
	//백준 10451번
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		t=sc.nextInt(); //테스트 케이스 숫자 받기
		
		while(t-->0) {
			n=sc.nextInt(); //순열 갯수 받을 것
			cnt=0;
			
			//배열들 크기 지정
			arr = new int[n+1];
			checked=new boolean[n+1];
			
			//그래프에 입력받음
			for(int i=1; i<=n; i++) {
				arr[i] = sc.nextInt();
			}
			
			for(int i=1; i<=n; i++) {
				if(checked[i]==false) {
					dfs(i);
					cnt++;
				}
			}
			System.out.println(cnt);
		}
	}
	
	static void dfs(int index) {
		checked[index] = true;
		
		if(checked[arr[index]]==false) {
			dfs(arr[index]);
		}else return;
	}
	
	
}
반응형