반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

팀 결성 본문

 

해결법

문제를 보고서 이 문제는 경로 압축으로 루트 노드를 찾는 함수를 팀 합치기 연산으로 사용한다. 그리고 루트 노드가 같은지 판단하는 함수를 같은 팀 여부 확인으로 풀었다.

 

코드(한번에 맞음)

n, m = map(int, input().split())

def find_parent(parent, x):
    if parent[x] != x:
        find_parent(parent, parent[x])
    return parent[x]

def union(parent, a, b):
    a = find_parent(parent, a)
    b = find_parent(parent, b)

    if a < b:
        parent[b] = a
    else:
        parent[a] = b

parent = [i for i in range(n+1)]    
answer = []

for i in range(m):
    a, b, c = map(int, input().split())
    
    if a == 0:
        union(parent, b, c)
    else:
        if find_parent(parent, b) == find_parent(parent, c):
            answer.append("Yes")
        else:
            answer.append("NO")

for i in answer:
    print(i)

앞에서 find_parent 함수와 union 함수가 여러 번 나와서 그런지 이 문제를 풀 때 바로 구현할 수 있었다. 

728x90
반응형
Comments