728x90
반응형
이 문제는 음.. 전형적 탐색 문제
dfs로 접근했다.
컴퓨터(노드)의 갯수와 관계 그래프가 주어지기 때문에 하나의 노드를 시작으로 쭉 이어진 마지막 노드까지 가면서
방문처리(visit)를 해주면된다. 물론 다음 노드를 볼때는 방문처리(visit)가 되지 않은 상태의 노드를 선택해야한다.
그리고 한번의 dfs가 끝나면 네트워크의 갯수(answer)에 1을 더해주면된다.
def solution(n, computers):
answer = 0
visit = [False] * n
def dfs(node):
visit[node] = True
for i in range(n):
if node != i and computers[node][i] and not visit[i]:
dfs(i)
for i in range(n):
if not visit[i]:
dfs(i)
answer += 1
return answer
lv3 치고는 좀 쉬운 느낌이 있지 않은가 싶다. 근데 꽤 오래동안 알고리즘과 거리를 둬서 그런지 로직을 작성할 때 많이 헷갈려서 고생 좀 했다.
728x90
반응형
'알고리즘 > python' 카테고리의 다른 글
[프로그래머스] lv2 다리를 지나는 트럭_python (0) | 2024.04.03 |
---|---|
[프로그래머스] lv2 땅따먹기_python (0) | 2024.03.28 |
[프로그래머스] lv2 하노이의 탑_python (0) | 2024.03.27 |
[softeer] lv3 순서대로 방문하기_python (2) | 2024.03.25 |
[softeer] lv3 성적평가_python (0) | 2024.03.25 |