[Algorithm] 순열 사이클 10451 파이썬

Jifrozen·2021년 7월 18일
1

Algorithm

목록 보기
24/70
# https://www.acmicpc.net/problem/10451
import sys

# 런타임 에러 (RecursionError) 해결
sys.setrecursionlimit(10000)
t = int(input())


# dfs
def dfs(h, k, visited, data):
    visited[h] = 1
    if visited[k - 1] == 0:
        dfs(k - 1, data[k - 1], visited, data)


# 순열 사이클인데
# 이렇게 생각했다.
# 3 -> data[3-1](7) -> data[7-10](5) -> data[5-1](1) 순열
# 무조건 순열은 생겨야한다 (그게 문제 조건임) 그렇기 때문에 방문기록만 확인하면 된다.
result = [0] * t
for i in range(t):
    result[i] = 0
    n = int(input())
    visited = [0] * n
    data = list(map(int, sys.stdin.readline().split()))
    for h in range(n):
        if visited[h] == 0:
            result[i] += 1
            dfs(h, data[h], visited, data)

for r in result:
    print(r)

DFS/BFS 못푼 문제
연구소
연산자 끼워넣기
감시피하기
블록이동하기

2개의 댓글

comment-user-thumbnail
2021년 7월 19일

안녕하세요, 김덕우입니다. DFS/BFS 복습 확인했습니다!! 저번주 너무 수고하셨어요. 이번주도 화이팅입니다!!!

답글 달기
comment-user-thumbnail
2021년 7월 19일

dfs/bfs 문제 저도 못 푼 것들이 많네요,,😥😥 덥기도 엄청 더운데 문제도 너무 어려워서 힘든 한 주였던 것 같아요,,! 이번주는 더 덥다고 하는데 더위 조심하시고 같이 힘내봐요! 화이팅~~

답글 달기