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문제는 처음 풀어본다..ㅎㅎ! 꾸준히 공부하니까 실력이 늘고있는거같당 파이팅 ~ 😀