[프로그래머스/Python] 네트워크

류성훈·2022년 6월 30일
0

코딩테스트

목록 보기
23/29

https://programmers.co.kr/learn/courses/30/lessons/43162?language=python3

def dfs(x, n, computers, visited):
    visited[x] = True
    
    for i in range(n):
        if computers[x][i] == 1 and x != i:
            if visited[i] == False:
                dfs(i, n, computers, visited)

def solution(n, computers):
    answer = 0
    
    visited = [False for _ in range(n)]
    
    for i in range(n):
        if visited[i] == False:
            answer += 1
            dfs(i, n, computers, visited)
    
    return answer

생각해야 할 것

  • 방문 여부(visited)로 재귀 수행가능여부 판단
  • 방문한 컴퓨터를 True로 처리하고, 다음 방문 기준을 잘 생각해야 함
  • 자기자신은 패스하고(x != i)
  • 컴퓨터끼리 연결되어있는지 판단(computers[x][i]==1)한 후에
  • 방문되지 않은 컴퓨터인지 확인하고(visited[i]==False)
  • 재귀 수행
profile
(전)Backend Developer / (현)Data Engineer

0개의 댓글