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

구민지·2023년 10월 6일
0

문제

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

내 풀이

cnt=0
def solution(n, computers):
    answer = 0
    visited = [False for _ in range(n)]
    graph = []
    for i in range(n):
        tmp = []
        for j in range(n):
            if i != j and computers[i][j] == 1:
                tmp.append(j)
        graph.append(tmp)
        
    for start in range(n):
        global cnt
        cnt = 0
        dfs(start, visited, graph)
        if cnt>0:
            answer+=1

    return answer


def dfs(start, visited, graph):
    if visited[start]:
        return
    visited[start] = True
    global cnt
    cnt += 1

    for node in graph[start]:
        dfs(node, visited, graph)

나는 "이것이 취업을 위한 코딩테스트"다 라는 책을 보고 코테 공부를 했는데 그래서 그래프 초기상태를 그 책에서 배운 형태랑 비슷하게 만들어야 마음이 편하다..ㅎㅋ 그래서 입력받은 computers의 값의 형태를 좀 변형해서 graph를 새로 만들고 dfs 함수를 따로 선언한 후 이용해서 문제를 풀었다!

그리고 전체 네트워크의 개수를 카운트하기 위해서 cnt를 전역변수로 만들어서 dfs 탐색과정에서 노드가 하나라도 카운트가 된다면 네트워크가 존재한다는 걸 이용해서 전체 네트워크를 카운트했다!

요즘 맨날 백준만 풀다가 오랜만에 프로그래머스 문제 풀어보는데 Level 3문제는 처음 풀어본다..ㅎㅎ! 꾸준히 공부하니까 실력이 늘고있는거같당 파이팅 ~ 😀

0개의 댓글