250x250
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- 심볼릭 레퍼런스
- BFS
- python list method
- 다이렉트 레퍼런스
- stop the world
- dfs
- 2026 AWS SAA-C03
- AWS SAA-C03 합격후기
- 백준
- 스프링 컨테이너
- 파이썬
- 코딩테스트
- getreference
- aws saa-c03
- 컴포넌트 스캔
- 자바
- 객체지향
- 클래스 로더 계층
- 파이썬 리스트 메서드
- 어플리케이션 클래스 로더
- 자료구조
- 딕셔너리
- 플랫폼 클래스 로더
- 파이썬 문자열 메서드
- Spring
- python
- 부트스트랩 클래스 로더
- java
- 알고리즘
- 스프링
Archives
- Today
- Total
클라우드 낚시꾼
[백준] 2606번 바이러스 (Python) 본문
728x90


시간 복잡도, 공간 복잡도
컴퓨터의 수가 100대고 시간 제한과 메모리 제한은 아래와 같았다.
| 1 초 | 128 MB |
파이썬은 1초에 2000만번 연산이 가능하다. N의 최대가 100이라는 것을 고려해봤을 때 시간복잡도는 여유롭다고 판단했다.
알고리즘
그래프가 주어졌고 "1번 컴퓨터가 감염되어서 2,3,5,6 컴퓨터도 감염된다."를 언급한 것으로 보아 그래프 탐색 유형임을 눈치챘다.
또한, 탐색 순서를 구체적으로 명시하지는 않았지만 감염 컴퓨터를 2,3,5,6으로 나열한 것으로 보아 DFS 탐색이라고 예상했다.
다음, 자연어 알고리즘과 코드다.
1. 입력을 받고 그래프를 만든다.
2. DFS로 그래프를 탐색한다.
3. 1번 컴퓨터로부터 감염된 컴퓨터를 출력한다.
# dfs 탐색
def dfs(graph, v, visited):
visited[v] = True
for i in graph[v]:
if not visited[i]:
dfs(graph, i, visited)
n = int(input()) + 1 # 컴퓨터의 수 (+1을 한 이유는 컴퓨터1을 인덱스1과 매칭시키기 위함이다.)
c = int(input()) # 쌍 개수
graph = [[] for i in range(n)] # 그래프
# 그래프 생성
for i in range(c):
inp = list(map(int, input().split()))
graph[inp[0]].append(inp[1])
graph[inp[1]].append(inp[0])
# 방문기록테이블
visited = [False] * n
# 호출
dfs(graph,1,visited)
# 1번으로부터 감염된 컴퓨터 개수 출력, True는 감염
print(visited[2:len(visited)].count(True))
배운점(소감)
이 문제는 그래프 정보를 입력받아 그래프를 생성하고 그 그래프를 탐색하는 간단한 그래프 탐색 문제이다. 처음에 필자는 그래프를 생성할때 무방향 그래프인 것을 반영하지 않아 오답이 나왔다. 예를 들면, 노드1과 노드2가 연결되어 있으면 그래프 상에 (1,2), (2,1) 관계가 저장되어 있어야 했는데 나는 (1,2)만 저장했었다. 그래서 수정하기 위해 그래프 생성 코드를 아래와 같이 수정했다. 꼭 꼭 그래프의 특성(무방향 그래프)을 반영하자.
# 그래프 생성(무방향 그래프)
for i in range(c):
inp = list(map(int, input().split()))
graph[inp[0]].append(inp[1])
graph[inp[1]].append(inp[0])
728x90
'CodingTest > 문제풀이' 카테고리의 다른 글
| [백준] 2667번 단지번호붙이기 DFS - Python3 (1) | 2023.12.21 |
|---|---|
| [백준] 2178번 미로 탐색 Python3 - BFS (0) | 2023.12.21 |
| [백준] 1325번 효율적인 해킹 BFS/DFS Python - pypy3 (1) | 2023.12.20 |
| [백준] 11725번 트리의 부모 찾기 (Python) - RecursionError 발생 (2) | 2023.12.20 |
| [백준] 1260번 DFS와 BFS (Python) (0) | 2023.12.19 |