코테 준비/프로그래머스

[level 2] 네트워크

쿠쿠*_* 2023. 9. 30. 17:59

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

def solution(n,computers):
    answer=0
    visited=[0 for i in range(len(computers))]
    
    def DFS(i):
        visited[i]=1
        for a in range(n):
        #i와 a가 연결되어있다고 했을때 a를 아직 방문하지 않은 경우
            if computers[i][a] and not visited[a]:
                DFS(a)
    
    for i in range(n):
        if not visited[i]:
            DFS(i)
            answer+=1
            
    return answer
from collections import deque

def solution(n, computers):
    answer = 0
    visited = [False] * n

    def bfs(start, visited, computers):
        visited[start] = True
        queue = deque([start])
        while queue:
            v = queue.popleft()
            for i in range(n):
                # 방문하지 않은 연결된 컴퓨터
                if computers[v][i] == 1 and not visited[i]:
                    visited[i] = True
                    queue.append(i)

    # 방문하지 않은 컴퓨터 중 작은 번호부터 BFS 수행
    for i in range(n):
        if not visited[i]:
            bfs(i, visited, computers)
            answer += 1

    return answer

핵심포인트

✅ DFS와 BFS는 큰 틀이 어차피 같기때문에 그 틀을 외워놓자!

'코테 준비 > 프로그래머스' 카테고리의 다른 글

[level 3] 여행경로  (0) 2023.11.05
[level 2] 단어변환  (0) 2023.11.05
[level 2] 타겟넘버  (0) 2023.09.30
[SQL_JOIN]  (0) 2023.06.13
[SQL_IS NULL]  (0) 2023.06.13