Algorithm/programmers

혼자 놀기의 달인 ( Level 2, Python, 연습문제 )

takeU 2022. 12. 12. 14:58
반응형
def dfs(cards, cur, visited, count):
    if not visited[cur]:
        visited[cur] = count
        return dfs(cards, cards[cur] - 1, visited, count)
    return

def solution(cards):
    visited = [0] * len(cards)
    count = 1
    for c in cards:
        if not visited[c - 1]:
            dfs(cards, c - 1, visited, count)
            count += 1
    check = {}
    for v in visited:
        check[v] = check.get(v, 0) + 1
    ans = sorted(list(check.values()), reverse=True)
    return ans[0] * ans[1] if len(ans) > 1 else 0

dfs

1. dfs로 박스 탐색

2. visited 카운팅

3. value기준 내림차순 정렬 후 최대값 두개 곱 리턴 ( 전부 한 박스 안에 있는 경우 0 리턴)