본문 바로가기
CS/Coding Test

[백준] 2606: 바이러스, python 구현 / 출력 초과 Error

by hyez 2023. 2. 20.

어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오.

 

code

현재는 adjacency matrix를 사용하여 구현하였지만, 사실 adjacency list를 사용하는 것이 메모리 효율측면에서 월등하다고 한다 ! 

만약 가중치를 가지는 그래프라면 

Node[1] = [(2, 4), (3, 1), ...] 와 같이 튜플로 (node, weight)를 표현할 수 있음 !

 

n = int(input())
pair_n = int(input())
adj_mat = [[0]*n for _ in range(n)]
for _ in range(pair_n):
    x, y = map(int, input().split())
    adj_mat[x-1][y-1] = 1
    adj_mat[y-1][x-1] = 1

visited = [0]*n
result = []
def dfs(comp):
    for i, v in enumerate(comp):
        if visited[i]:
            continue;

        if v:
            result.append(i)
            visited[i] = 1
            dfs(adj_mat[i])
            result.pop()

dfs(adj_mat[0])
print(sum(visited)-1)

백준 출력 초과 Error

백준에 코드 제출 시 출력 초과 에러가 떴다. 

해당 에러가 뜬다면, 두 가지를 살펴봐야 한다.

 

  1. 디버깅을 위한 print() 코드를 제거하지 않은 경우
  2. 실제로는 틀렸습니다 이지만 출력초과로 나오는 경우
    -> 답의 출력 형식이 정형화 되어있지 않은 경우
         e.g. 출력하는 string의 길이가 가변적인 경우

나의 경우엔 1번에 해당하였다. print code를 잘 확인하고, 디버깅은 debug를 사용하는 습관을 들이자 !

댓글