문제
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
풀이
연결 요소의 개수 문제와 상당히 유사한 문제였다.
DFS로 풀 수 있는 기본적인 그래프 문제로, 인덱싱할 때만 주의하면 된다.
코드
import sys, collections
sys.setrecursionlimit(10**6)
def make_graph(n, p):
g = collections.defaultdict(int)
for i in range(1, n+1):
g[i] = p[i-1]
return g
def dfs(u):
global g
global visited
visited[u] = 1
if not visited[g[u]]:
dfs(g[u])
t = int(sys.stdin.readline().strip())
for _ in range(t):
n = int(sys.stdin.readline().strip())
p = [int(x) for x in sys.stdin.readline().split()]
cnt = 0
g = make_graph(n, p)
visited = [0 for _ in range(n+1)]
for i in range(1, n+1):
if not visited[i]:
dfs(i)
cnt += 1
print(cnt)
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 2805 - 나무 자르기 [Python(파이썬)] (0) | 2021.03.17 |
---|---|
[백준] 18111 - 마인크래프트 [Python(파이썬)] (0) | 2021.03.13 |
[백준] 11657 - 타임머신 [Python(파이썬)] (0) | 2021.03.04 |
[백준] 17406 - 배열 돌리기4 [Python(파이썬)] (0) | 2021.03.01 |
[백준] 1504 - 특정한 최단 경로 [Python(파이썬)] (0) | 2021.03.01 |
문제
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
풀이
연결 요소의 개수 문제와 상당히 유사한 문제였다.
DFS로 풀 수 있는 기본적인 그래프 문제로, 인덱싱할 때만 주의하면 된다.
코드
import sys, collections
sys.setrecursionlimit(10**6)
def make_graph(n, p):
g = collections.defaultdict(int)
for i in range(1, n+1):
g[i] = p[i-1]
return g
def dfs(u):
global g
global visited
visited[u] = 1
if not visited[g[u]]:
dfs(g[u])
t = int(sys.stdin.readline().strip())
for _ in range(t):
n = int(sys.stdin.readline().strip())
p = [int(x) for x in sys.stdin.readline().split()]
cnt = 0
g = make_graph(n, p)
visited = [0 for _ in range(n+1)]
for i in range(1, n+1):
if not visited[i]:
dfs(i)
cnt += 1
print(cnt)
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 2805 - 나무 자르기 [Python(파이썬)] (0) | 2021.03.17 |
---|---|
[백준] 18111 - 마인크래프트 [Python(파이썬)] (0) | 2021.03.13 |
[백준] 11657 - 타임머신 [Python(파이썬)] (0) | 2021.03.04 |
[백준] 17406 - 배열 돌리기4 [Python(파이썬)] (0) | 2021.03.01 |
[백준] 1504 - 특정한 최단 경로 [Python(파이썬)] (0) | 2021.03.01 |