개발자 블로그
10451번 순열 사이클 본문
나의 풀이
from collections import deque
def find_cycle(graph, start_num, visited):
q = deque()
q.append(start_num)
while q:
cur_num = q.popleft()
next_num = graph[cur_num]
if next_num not in visited:
visited.append(next_num)
q.append(next_num)
t = int(input())
for _ in range(t):
visited = []
n = int(input())
num_list = list(map(int, input().split()))
graph = {idx: val for idx, val in enumerate(num_list, 1)}
cnt = 0
for i in range(1, n+1):
if i not in visited:
bfs(graph, i, visited)
cnt += 1
print(cnt)
1) 1~n 까지 순서로 각 순열 딕셔너리 생성한다.
2) 방문했다면 visitied리스트에 추가하여 값이 없다면 추가 더이상 추가가 안된다면 사이클 완성
'알고리즘 > 백준' 카테고리의 다른 글
1389번 케빈 베이컨 6단계 법칙 (0) | 2022.08.01 |
---|---|
1525번 퍼즐 (0) | 2022.07.28 |
2664번 촌수계산 (0) | 2022.07.27 |
1697번 숨바꼭질 (0) | 2022.07.25 |
2468번 안전 영역 (0) | 2022.07.24 |