Problem Solving

boj 2487 : 섞기 수열

1ssrek 2016. 8. 12. 19:52

boj 2487 : 섞기 수열


https://www.acmicpc.net/problem/2487


각 cycle 길이의 lcm을 출력해주면 된다.

예를들어 섞기수열이 3 2 5 6 1 4인 경우

cycle(1) = 3 (1->3->5->1),

cycle(2) = 1 (2->2)

cycle(3) = 3

cycle(4) = 2 (4->6->4)

cycle(5) = 3

cycle(6) = 2

이므로 lcm(cycle(1),cycle(2), ..., cycle(6))인 6을 출력해주면 정답.

각각 숫자에 대한 cycle 수를 구하는 것 보단 

1의 cycle을 구하고 cycle의 경로에 있는 1,3,5의 cycle 수도 모두 같은 값으로 해주면 훨씬 빠르다.