25614번 - 자리 바꾸기
m 제한이 10^200000 으로 매우 커서, 직접 한 단계씩 해보는 것으로는 문제를 풀 수가 없습니다.
작은 경우들을 한 단계씩 만들어가면서 출력해보세요. 어떤 규칙이 보일지도 몰라요.
예를 들어 n=4이고 A = [2, 3, 4, 1]인 경우, m=1일 때부터 쭉 나열해보면 다음과 같습니다.
(2, 3, 4, 1) -> (3, 4, 1, 2) -> (4, 1, 2, 3) -> (1, 2, 3, 4)
-> (2, 3, 4, 1) -> (3, 4, 1, 2) -> (4, 1, 2, 3) -> (1, 2, 3, 4)
-> (2, 3, 4, 1) -> ...
물론 [2, 3, 4, 1]은 규칙을 찾기 쉬운 경우인 편에 속합니다. 예제의 경우 좀 더 많이 나열해야 주기가 보일 것입니다. 그 주기가 어떻게 나온 것인지, 작은 단위로 나눠서 생각하면 그 주기가 더 줄어들 수 있을지 고민해봅시다.
여기까지 모두 이해했다면 문제를 거의 푼 것이지만, "큰 수의 처리" 부분에서 한가지 tricky한 부분이 있습니다. 파이썬에서 MOD 연산이나, 다른 모든 나머지를 구하는 방법이 수의 길이 L만큼의 연산을 필요로 한다는 점을 잘 생각해야 합니다. L * 200000은 이 문제에서 다소 큽니다.
댓글을 작성하려면 로그인해야 합니다.
qwaierica 3년 전 0
알고리즘 초보입니다. 멋도 모르고 경시대회 1이 더 쉬운건줄 알고 도전해봤는데 지금 너무 어지러워용..
나름대로 시간을 엄청 줄여본거 같은데 시간초과 해결이 안 될거 같아요.
알고리즘 힌트 가능하신가요 고수님들?