본문 바로가기

CodingTest/SW Expert Academy

[ SW Expert Academy ] 5248. 그룹 나누기 # 다시 풀기 #

서로소 집합 만드는 알고리즘이... 헷갈린다. 간만에 푸니까 ㅠ

정말 기본 알고리즘을 많이 까먹었구나... 하..

 

1 차 제출 [ 3 / 10 ] Fail

일단 기억나는대로 작성한 코드............ 

def find_set(x):
    if x == p[x]:
        return x
    return find_set(p[x])

def union(x, y):
    if x > y:
        p[find_set(x)] = find_set(y)
    else:
        p[find_set(y)] = find_set(x)

if __name__ == "__main__":
    T = int(input())
    p = {}
    for test_case in range(1, T+1):
        answer = 0
        n, m = map(int, input().split())
        teams = list(map(int, input().split()))
        for i in range(1,n+1):
            p[i] = i
        for i in range(0, len(teams), 2):
            union(teams[i], teams[i+1])
        answer = len(set(p.values()))
        print("#{} {}".format(test_case, answer))

 

... 왜 틀린지 모르겠다.. 왜지?