백준 python 기록
백준 10451 파이썬 순열 사이클
작지
2021. 10. 13. 10:31
백준 링크: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
문제가 뭔말인지 조금 햇갈려서 고생했다. 간단한 dfs문제였는데ㅜㅜ
dfs를 사용해서 카운트 숫자를 하나씩 늘려주었다.
다만 sys.setrecursionlimit를 안하면 오류가 나기때문에 대충 100만정도 설정했다.
import sys
sys.setrecursionlimit(1000000)
input = sys.stdin.readline
tc=int(input())
for i in range(tc):
n=int(input())
s=list(map(int,input().split()))
visited=[0]*n
cnt = 0
def dfs(x,visit):
visit.append(x)
visited[x] = 1
if s[x]-1 not in visit and visited[s[x]-1] == 0:
dfs(s[x]-1,visit)
for j in range(n):
if visited[j] == 0:
dfs(j,[])
cnt += 1
print(cnt)