https://programmers.co.kr/learn/courses/30/lessons/43162
2시간 미만의 시간을 잡고 풀었지만 시간이 2배 이상 걸렸다.
시간조절 패인은 무엇이었을까?
이런 경우를 고려하지 못했기때문에 시간이 오래걸린것 같다
lv 3이상의 그래프 문제일 경우 30분 이상은 투자해서 설계를 꼼꼼하게 한 후 구현을 시작하는게 제일 빨리 푸는 방법인것같다.
설계시간 아끼려고 문제 대충보고 바로 구현하기 시작했다가는 오늘처럼 시간을 땅에 버리기 쉽상이니 주의하자!!
computers의 노드 전체를 돌면서 dfs(node)를 돌린다.
node를 다 돌았다면 route_list의 length를 return 한다.
route_list = set()
def solution(n, computers):
for i in range(n):
computers[i][i] = 0
for node in range(n):
print(node,'번째 노드')
route_list.add(dfs(node, computers, stack=[]))
answer = len(route_list)
return answer
def dfs(start, computers, stack):
visited = [False] * len(computers)
visited_node = []
stack.append(start)
while stack:
now = stack.pop()
# 이전에 방문경험없다면
if not visited[now]:
visited[now] = True
visited_node.append(now)
# 자식노드가 있다면
for child in range(len(computers[now])):
if computers[now][child]:
stack.append(child)
str_visited = ''.join(map(str, sorted(visited_node)))
return str_visited