어느 날 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
백준에 코드 제출 시 출력 초과 에러가 떴다.
해당 에러가 뜬다면, 두 가지를 살펴봐야 한다.
- 디버깅을 위한 print() 코드를 제거하지 않은 경우
- 실제로는 틀렸습니다 이지만 출력초과로 나오는 경우
-> 답의 출력 형식이 정형화 되어있지 않은 경우
e.g. 출력하는 string의 길이가 가변적인 경우
나의 경우엔 1번에 해당하였다. print code를 잘 확인하고, 디버깅은 debug를 사용하는 습관을 들이자 !
'CS > Coding Test' 카테고리의 다른 글
[백준] 4963: 섬의 개수 python 구현 / BFS, 10% 틀렸습니다 (0) | 2023.03.02 |
---|---|
[백준] 11724: 연결 요소의 개수 python 구현 / DFS, 런타임 에러 (RecursionError), 시간초과 해결 (0) | 2023.03.02 |
[백준] 1012: 유기농 배추 python 구현 / DFS, RecursionError (0) | 2023.02.21 |
[백준] 2667: 단지번호붙이기 python 구현 / BFS (0) | 2023.02.21 |
[백준] 1260: DFS와 BFS, python 구현 (0) | 2023.02.20 |
댓글