본문 바로가기
PS/프로그래머스

프로그래머스: 네트워크 (python, 파이썬)

by 지기_ 2021. 7. 2.
반응형

1.문제

https://programmers.co.kr/learn/courses/30/lessons/43162

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있

programmers.co.kr

 

2. 풀이

연결이 되어있는 컴퓨터는 하나의 그룹으로 생각해서 같은 parent를 가지도록 한다.

각각의 컴퓨터가 연결되어있는 parent값을 가진 parent 리스트를 set으로 만들어 unique한 값을 가져온다,

다만 여기서는 parent를 완전히 찾아가지 않은 값이 들어있을 수 있으므로 마지막으로 parent값을 채워주는 작업을 한다.

 

3. 구현

def find(x, parent):
    if parent[x]==x:
        return x
    else:
        return find(parent[x], parent)

def uni(x, y, parent):
    x = find(x, parent)
    y = find(y, parent)
    if x==y:
        return
    parent[x]=y
    return
    
def solution(n, computers):
    answer = 0
    parent = [i for i in range(n)]
    for i in range(n):
        for j in range(n):
            if computers[i][j]==1:
                uni(i,j, parent)
    print(parent)
    
    for i in range(len(parent)):
        parent[i]=find(i,parent)
    
    answer = len(set(parent))
    return answer

 

반응형

댓글