https://school.programmers.co.kr/learn/courses/30/lessons/131130#
class Solution {
public int solution(int[] cards) {
int answer = 0;
int len = cards.length;
for(int i = 0; i < len; ++i)
{
boolean[] visit = new boolean[len];
int first = search(i, cards, visit);
int second = 0;
for(int j = 0; j < len; ++j)
{
if(visit[j])
continue;
//System.out.println(first+","+second+","+i+","+j);
second = search(j, cards, visit);
answer = Math.max(answer, first*second);
}
}
return answer;
}
public int search(int start, int[] cards, boolean[] visit)
{
int ret = 1;
int next = start;
visit[next] = true;
while(true)
{
next = cards[next];
next-=1;
if(visit[next])
{
break;
}
else
{
visit[next] = true;
}
ret++;
}
return ret;
}
}