Baekjoon_2606번: 바이러스

HKTUOHA·2023년 10월 8일
0

알고리즘 문제

목록 보기
11/15
post-thumbnail

📌문제


📌나의 코드

  • DFS 31256KB, 52ms
def dfs(computers, v, visited):
    global cnt
    visited[v] = True
    for i in computers[v]:
        if i and not visited[i]:
            cnt += 1
            dfs(computers, i, visited)

n = int(input())  # 컴퓨터 수
m = int(input())  # 컴퓨터 쌍의 수

computers = [[] for _ in range(n + 1)]  
for _ in range(m):
    c1, c2 = map(int, input().split())
    computers[c1].append(c2)  # c1 컴퓨터와 c2 컴퓨터 
    computers[c2].append(c1)  # 서로 연결

# 방문 여부 리스트
visited = [False] * (n + 1)

cnt = 0
dfs(computers, 1, visited)
print(cnt)
  • BFS 34140KB, 72ms
from collections import deque

def bfs(computers, start, visiteed):
    global cnt
    queue = deque()
    queue.append(start)
    visited[start] = True
    while queue:
        v = queue.popleft()
        for i in computers[v]:
            if not visited[i]:
                cnt += 1
                queue.append(i)
                visited[i] = True


n = int(input())  # 컴퓨터 수
m = int(input())  # 컴퓨터 쌍의 수

computers = [[] for _ in range(n + 1)]
for _ in range(m):
    c1, c2 = map(int, input().split())
    computers[c1] += [c2]
    computers[c2] += [c1]

# 방문 여부 리스트
visited = [False] * (n + 1)

cnt = 0
bfs(computers, 1, visited)
print(cnt)

📌다른 사람 코드

  • DFS 31256KB, 48ms
def dfs(v):
    visited[v] = 1
    for i in computers[v]:
        if visited[i] == 0:
            dfs(i)

n = int(input())  # 컴퓨터 수
m = int(input())  # 컴퓨터 쌍의 수

computers = [[] for _ in range(n + 1)]
for _ in range(m):
    c1, c2 = map(int, input().split())
    computers[c1] += [c2]
    computers[c2] += [c1]

# 방문 여부 리스트
visited = [False] * (n + 1)

dfs(1)
print(sum(visited) - 1)
  • BFS 34140KB, 68ms
from collections import deque

def bfs(v):
    queue = deque()
    queue.append(v)
    visited[v] = 1
    while queue:
        v = queue.popleft()
        for i in computers[v]:
            if not visited[i]:
                queue.append(i)
                visited[i] = 1


n = int(input())  # 컴퓨터 수
m = int(input())  # 컴퓨터 쌍의 수

computers = [[] for _ in range(n + 1)]
for _ in range(m):
    c1, c2 = map(int, input().split())
    computers[c1] += [c2]
    computers[c2] += [c1]

# 방문 여부 리스트
visited = [0] * (n + 1)

bfs(1)
print(sum(visited) - 1)

출처

profile
공부 기록

0개의 댓글