세용용용용 2023. 10. 24. 10:28

코딩테스트 연습 - 네트워크 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 코드

from collections import deque
def solution(n, computers):
    answer = 0
    # 연결된 네트워크 딕셔너리
    networt = {}
    for i in range(len(computers)):
        #print(computers[i])
        networt[i+1] = []
        for j in range(len(computers[0])):
           
            if computers[i][j] == 1 and j!=i:
                networt[i+1].append(j+1)
   
    #print(networt)
    # 방문처리 해주면서 연결된 네트워크 집합 개수를 구한다
    visit = [0]*n
    count = 0
    for i in range(1, n+1):
        if visit[i-1] == 1:
            continue
        count += 1
        queue = deque()
        queue.append((i,networt[i]))

        while queue:
            x,y = queue.popleft()
            visit[x-1] = 1

            for z in y:
                if visit[z-1]==0 and z in networt:
                    queue.append((z,networt[z]))
    #print(count)
    answer = count
    return answer
solution(3, [[1, 1, 0], [1, 1, 1], [0, 1, 1]])