개발자 블로그
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
나의 풀이
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 |