알고리즘/Python

[백준/Python] 10451번: 순열 사이클

_SIHA_ 2022. 3. 5. 04:09

📖  문제 링크

https://www.acmicpc.net/problem/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

 

 

  최종 코드

import sys
input = sys.stdin.readline
sys.setrecursionlimit(2000)

t = int(input())


def dfs(x):
    check_dfs[x] = True
    for i in arr[x]:
        if check_dfs[i] == False:
            dfs(i)
            

for i in range(t):
    sum = 0
    n = int(input())
    arr = [[] for i in range(n+1)]
    temp = list(map(int, input().split()))
    check_dfs = [False] * (n+1)
    for j in range(1, n+1):
        arr[j].append(temp[j-1])
        
    for k in range(1, n+1):
        if check_dfs[k] == False:
            dfs(k)
            sum+=1
           
    
    print(sum)