코딩 테스트/Baekjoon

S3 2606. 바이러스

  • -
728x90
반응형

문제 보기 :  2606번: 바이러스


문제

  • 정답률 : 46%


작성 코드

def dfs(graph,start,visited):
    visited[start]=True
    answer = 1
    for node in graph[start]:
        if not visited[node]:
            answer += dfs(graph,node,visited)
    return answer

T = int(input())
n = int(input())
graph = {i+1:[] for i in range(T)}
for _ in range(n):
    n1,n2 = map(int,input().split())
    graph[n1].append(n2)
    graph[n2].append(n1)

visited = [False]*(T+1)

print(dfs(graph,1,visited)-1)

풀이

연결된 노드(컴퓨터)를 찾아야 하기에 dfs 알고리즘을 사용했고, 연결된 노드의 번호가 아닌 노드의 갯수를 구해야하기 때문에 
함수 안에 answer라는 변수를 두었다. 

그리고 단순 '연결'이기 때문에  graph[n1].append(n2) & graph[n2].append(n1)로 딕셔너리에 앞 뒤 값을 모두 append했다. 

또 visited는 False/True로 두어 방문 여부를 확인하도록 했다.

320x100
728x90

'코딩 테스트 > Baekjoon' 카테고리의 다른 글

S3 15649. N과 M (1)  (0) 2024.10.30
G5 7576. 토마토  (0) 2024.10.30
S3 1463. 1로 만들기  (0) 2024.10.25
S4 9012. 괄호  (0) 2024.10.23
S1 10844. 쉬운 계단 수  (0) 2024.10.23
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.