programmers.co.kr/learn/courses/30/lessons/43162
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있
programmers.co.kr
def solution(n,computers):
parent=[0]*n
for i in range(n):
parent[i]=i
def find_parent(x):
if parent[x]!=x:
parent[x]=find_parent(parent[x])
return parent[x]
def union_parent(a, b):
a = find_parent(a)
b = find_parent(b)
if a < b:
if parent.count(b)>1:
while b in parent:
parent[parent.index(b)]=a
parent[b] = a
else:
if parent.count(a)>1:
while a in parent:
parent[parent.index(a)]=b
parent[a] = b
conn=[]
for i in range(n):
for j in range(n):
if computers[i][j]==1 and not i==j:
conn.append((i,j))
for a,b in conn:
if find_parent(a) != find_parent(b):
union_parent(a,b)
result=[0]*n
for i in range(len(parent)):
result[parent[i]]=1
answer=result.count(1)
return answer
'코딩 테스트 > 문제 풀기' 카테고리의 다른 글
[프로그래머스] 단어 변환 (0) | 2021.04.19 |
---|---|
[프로그래머스] 2 x n 타일링 (0) | 2021.04.11 |
[프로그래머스] n진수 게임 (0) | 2021.04.03 |
[프로그래머스] 파일명 정렬 (0) | 2021.04.02 |
[프로그래머스] 압축 (0) | 2021.04.02 |
댓글