문제
제한 사항
풀이 방법
- 방문하지 않은 상자를 모두 방문한다.
- 상자안에 존재하는 값의 index가 아직 방문하지 않았다면 계속 방문한다.
- 한번에 방문한 값을 ans리스트에 넣는다.
- ans의 길이가 1이라면 0을, 아니면 방문한 값이 제일 큰 2개의 곱을 반환해준다.
코드
from collections import deque
def solution(cards):
visits=[0]*len(cards)
ans=[]
for i in range(len(cards)):
if visits[i]==1:
continue
dq=deque()
cnt=0
dq.append(i)
while dq:
index=dq.popleft()
if visits[index]==1:
break
visits[index]=1
cnt+=1
dq.append(cards[index]-1)
ans.append(cnt)
if len(ans)==1:
return 0
else:
ans.sort(reverse=True)
return ans[0]*ans[1]