반응형
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/43162?language=python3
2. 풀이
하나로 합쳐져있는 집합을 구하는 방법은 Union-Find이다.
3. 구현
def find(x, parent):
if parent[x]==x:
return x
parent[x]=find(parent[x], parent)
return parent[x]
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
반응형
'PS > 프로그래머스' 카테고리의 다른 글
[미완] 프로그래머스: 여행경로 ( python, 파이썬 ) (0) | 2021.07.02 |
---|---|
프로그래머스: 단어변환 (python, 파이썬 ) (0) | 2021.07.02 |
[그리디] 프로그래머스 조이스틱 python (0) | 2021.06.27 |
[BFS] 프로그래머스 게임 맵 최단거리 python (0) | 2021.06.18 |
[분할정복]프로그래머스 [카카오 인턴] 수식 최대화 python (0) | 2021.06.17 |
댓글