본문 바로가기

연습문제/JAVA

10451-순열사이클

 

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

 

 

처음에는 입력을 두 개씩 받아서 [(1,3),(2,2)....] 식으로 풀다가 index랑 비교하여 푸는 방법을 찾아서 새로 풀어보았다

 

import java.util.Scanner;

public class B10451 {
    static int[] intArr;
    static boolean[] visited;


    static int dfs(int j){
        if(j ==  intArr[j] || visited[j]) return 1;
        visited[j] = true;
        return dfs(intArr[j]);
    }

    public static void main(String[] args){
        Scanner sc= new Scanner(System.in);
        int N  = sc.nextInt();

        for(int i=0; i<N; i++){
            int M = sc.nextInt();
            intArr = new int[M+1];
            visited = new boolean[M+1];
            int count = 0;

            for(int j=1; j<M+1; j++){
               intArr[j] = sc.nextInt();
            }
            for(int j=1; j<M+1; j++){
                if(!visited[j]) count += dfs(j);
            }
            System.out.println(count);
        }
    }
}

 

'연습문제 > JAVA' 카테고리의 다른 글

2667-단지번호붙이기  (0) 2022.08.08
2331-반복수열  (0) 2022.08.08
2178-미로탐색  (0) 2022.08.07
1620-DFS와 BFS  (0) 2022.08.06
16234-인구이동  (0) 2022.08.05