개발자 블로그

10451번 순열 사이클 본문

알고리즘/백준

10451번 순열 사이클

hayongwoon 2022. 7. 29. 13:24

문제 설명

 

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