https://school.programmers.co.kr/learn/courses/30/lessons/43162
# 프로그래머스 특성상 visited를 인자로 넘겨주는 게 더 편함!
def visit(k, graph, visited):
# 방문 처리
visited[k] = 1
for i in range(len(graph[k])):
if visited[i] == 0 and graph[k][i] == 1:
visit(i, graph, visited)
def solution(n, computers):
visited = [0] * n
answer = 0
for i in range(n):
# 내가 함수로 썼던 check 부분도 사실 이 한 줄이면 된다 !!
if visited[i] == 0:
visit(i, computers, visited)
# answer만 추가해주면 되는데 !!
answer += 1
return answer
visited = []
#visited 배열 모두 -1인지 아닌지 체크
def check_visited():
global visited
for i in range(len(visited)):
if visited[i] == -1:
return i
return -1
def dfs(computers,index,c):
global visited
# 현재 노드 방문 처리
visited[c] = index
# 인접한 노드 중에 방문하지 않았다면 dfs추가
for i in range(len(computers[c])):
if visited[i] == -1 and computers[c][i] == 1:
dfs(computers,index,i)
def solution(n, computers):
global visited
visited =[-1] * n
answer = 0
index = 1
while True:
c = check_visited()
if c == -1:
break
dfs(computers,index,c)
index += 1
answer = max(visited)
return answer
반응형
'알고리즘' 카테고리의 다른 글
[코드트리 - 연습/dfs, bfs] 마을 구분하기 (0) | 2024.04.24 |
---|---|
[프로그래머스 고득점 Kit -DFS/BFS] 단어변환 (0) | 2024.04.19 |
[삼성 코테 기출 - 시뮬레이션] 코드트리 오마카세 (1) | 2024.04.13 |
순열과.조합. 무슨 말인지...알겠어요...? (feat. 순열과 조합 구현하기) (0) | 2024.04.13 |
[삼성 코테 기출 - 시뮬레이션] 루돌프의 반란 (0) | 2024.04.13 |