일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- CSS
- 브루트포스 알고리즘
- 구현
- 자료구조
- BASIC
- BFS
- 정렬
- 딕셔너리
- 그래프 이론
- 자바스크립트
- 그래프 탐색
- 프로그래머스스쿨
- 그래프이론
- 알고리즘
- 문자열
- programmers
- 다이나믹 프로그래밍
- 웹 프론트엔드
- 백준
- JavaScript
- 그리디 알고리즘
- 스택
- 파이썬
- 너비 우선 탐색
- DFS
- web
- 프로그래머스
- lv2
- DP
- level2
Archives
- Today
- Total
DevLog:-)
[알고리즘][파이썬]2606-바이러스 본문
반응형
문제
코드
BFS
import sys
from collections import deque
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
graph=[[] for _ in range(n+1)]
def bfs(start_v):
visited=[start_v]
q =deque()
q.append(start_v)
while(q):
cur_v=q.popleft()
for v in graph[cur_v]:
if(v not in visited):
visited.append(v)
q.append(v)
return len(visited)-1
for i in range(m):
a, b = map(int,sys.stdin.readline().strip().split())
graph[a].append(b)
graph[b].append(a)
print(bfs(1))
DFS
import sys
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
graph=[[] for _ in range(n+1)]
visited=[]
def dfs(cur_v):
visited.append(cur_v)
for v in graph[cur_v]:
if(v not in visited):
dfs(v)
return len(visited)-1
for i in range(m):
a, b = map(int,sys.stdin.readline().strip().split())
graph[a].append(b)
graph[b].append(a)
print(dfs(1))
문제설명
컴퓨터 네트워크에서 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하는 문제이다.
풀이
컴퓨터 네트워크를 이중배열의 그래프형태로 입력받고
1번 컴퓨터 즉, 1번 정점을 시작점으로 DFS나 BFS를 이용하여 연결되어 있는 모든 정점의 갯수를 반환하도록 구현했다.
여기서 1번 컴퓨터를 제외한 바이러스 감염 컴퓨터의 수를 원하는 것이기 때문에
마지막 visited의 길이에서 -1을 해줬다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[알고리즘][파이썬] 2178-미로 탐색 (1) | 2023.05.17 |
---|---|
[알고리즘][파이]1260-DFS와 BFS ✅ (0) | 2023.05.16 |
[알고리즘][파이썬]1149-RGB거리 (0) | 2023.05.14 |
[알고리즘][파이썬]2504-괄호의 값 (0) | 2023.05.14 |
[알고리즘][파이썬]10828-스택 (0) | 2023.05.14 |