배움과 성장/알고리즘·문제풀이
백준 10451 순열 사이클 Python: 재귀 없이 O(N)으로 세기
백준 10451 순열 사이클은 방문하지 않은 수에서 탐색을 시작할 때마다 사이클 수를 1 늘리면 풀 수 있다. 입력이 일반 방향 그래프가 아니라 1부터 N까지의 순열이므로, 각 정점의 진입 차수와 진출 차수가 모두 1이고 모든 연결 성분은 정확히 하나의 사이클이다.Python에서는 재귀 DFS보다 while 반복문이 안전하다. N이 1,000까지이고 하나의 사이클 길이도 1,000이 될 수 있어, 실행 환경의 재귀 한계에 가까워질 수 있기 때문이다.순열을 방향 그래프로 바꿔 본다순열 P에서 정점 i가 P[i]를 가리킨다고 생각한다.P = [2, 3, 1, 5, 6, 4]1 → 2 → 3 → 14 → 5 → 6 → 4사이클은 (1, 2, 3), (4, 5, 6) 두 개다. 순열에서는 모든 값이 정확히 한 ..