백준2487 섞기 수열 작성일 2019-07-11 | In KOI 문제 링크 http://icpc.me/2487 문제 출처 2009 전국 본선 고등부1 사용 알고리즘 유클리드 호제법 풀이 각 숫자가 같은 자리로 돌아오는 사이클을 모두 구해준 뒤, 그 길이의 lcm을 출력하면 됩니다. 전체 코드 123456789101112131415161718192021222324252627282930#include <bits/stdc++.h> using namespace std; int arr[20202]; int chk[20202]; int n; inline int lcm(int a, int b){ return a / __gcd(a, b) * b; } int dfs(int v, int cnt){ if(chk[v]) return cnt; chk[v] = 1; return dfs(arr[v], cnt+1); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for(int i=1; i<=n; i++) cin >> arr[i]; int ans = 1; for(int i=1; i<=n; i++){ if(chk[i]) continue; int now = dfs(i, 0); ans = lcm(ans, now); } cout << ans; }