본문 바로가기

알고리즘

PG) 네트워크 - lv3

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

 

프로그래머스

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

programmers.co.kr

 

from collections import deque

def solution(n, computers):
#     아이디어
# 큐를 이용한다
# 배열 하나를 만들어(arr) 그 배열에 이어져있는 관계를 저장
# 어차피 서로 연결되어 있으니 둘 모두를 저장할 필요 없이 한 쪽만 저장하면 됨
# visit으로 방문여부 체크
# visit을 돌며 False은 값 찾아서 answer += 1
# bsf이후에 False라면 그 어떠한 것도 이어져있지 않으니 그 자체로 네트워크임
# 그 외 bsf
    answer = 0
    arr = [[] for _ in range(n)]
    
    visit = [False for _ in range(n)]
    
    for i in range(len(computers)):
        for j in range(len(computers[i])):
            if i == j:
                continue
            if computers[i][j] == 1:
                arr[i].append(j)
    
    cnt = 0
    for i in range(len(arr)):
        for j in range(len(arr[i])):
            if visit[arr[i][j]] == False:
                cnt += 1
                visit[arr[i][j]] = True
                
                q = deque()
                q.append(arr[i][j])
                while q:
                    idx = q.popleft()
                    
                    for nxt in arr[idx]:
                        if visit[nxt] == False:
                            visit[nxt] = True
                            q.append(nxt)
                
        
    for i in visit:
        if i == False:
            cnt += 1
    
    return cnt

'알고리즘' 카테고리의 다른 글

PG) 단어 변환 - lv3  (0) 2024.07.08
PG) 야근지수 -lv3  (0) 2024.07.07
프로그래머스) 정수 삼각형 - lv3  (0) 2024.07.06
BOJ)괄호 추가하기 3  (0) 2024.06.28
BOJ) MooTube  (0) 2024.06.27