코딩 테스트 준비
순열 싸이클 - 실버 3
개발쉐발
2023. 1. 4. 13:10
728x90
반응형
import sys
sys.setrecursionlimit(10**7)
def dfs(x, sig):
sig[x] = True
if sig[cycle[x]] == False:
dfs(cycle[x], sig)
for i in range(int(input())):
N = int(input())
cycle = [0] + list(map(int,input().split()))
sig = [False] * (N+1)
ans = 0
for i in range(1, len(cycle)):
if sig[i] == False:
dfs(cycle[i], sig)
ans +=1
print(ans)
재귀에 대한 제한을 풀어주는게 포인트이며 bfs로도 풀이가 가능하지만 직관적인 dfs를 택했다.
해당 문제는 인덱스와 그 안의 요소를 연결시키는 것을 이해하는게 포인트이며 비슷한 유형이 쉽게 나올 수 있으니
꼭 기억해두자.
728x90
반응형