반응형
문제
https://www.acmicpc.net/problem/2606
🐍파이썬
import sys
com = int(sys.stdin.readline())
ssang = int(sys.stdin.readline())
graph = [[] for _ in range(com + 1)]
visited = [False] * (com + 1)
global answer #dfs함수 내에서도 사용할 수 있도록 전역변수 선언
answer = 0
for _ in range(ssang):
a, b = map(int, sys.stdin.readline().split())
graph[a].append(b)
graph[b].append(a)
def dfs(v): #dfs를 통해 더 깊이 들어갈 수 없을 때까지 탐색
global answer
visited[v] = True
answer += 1 #노드 하나 탐색 시마다 answer+1
for i in graph[v]:
if not visited[i]:
dfs(i)
dfs(1)
print(answer - 1) #1번 컴퓨터는 제외하고 카운팅
다른 풀이 방법
from sys import stdin
n = int(stdin.readline())
v = int(stdin.readline())
graph = [ [] for _ in range(n+1) ]
visited = [0] * (n+1) #방문한 노드의 갯수를 카운팅하기 위한 리스트
for i in range(v) :
a, b = map(int, stdin.readline().split())
graph[a] += [b]
graph[b] += [a]
def dfs(k) :
visited[k] = 1 #방문 시 visited에 1을 대입
for nx in graph[k] :
if visited[nx] == 0 :
dfs(nx)
dfs(1)
print(sum(visited)-1) #visited의 1갯수를 통해 방문한 노드의 갯수를 센다.
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준|파이썬] 1012: 유기농 배추 (실버2) (0) | 2023.04.08 |
---|---|
[백준|파이썬] 2644: 촌수계산 (실버2) (0) | 2023.04.07 |
[백준|파이썬] 2178: 미로 탐색 (실버1) (0) | 2023.04.06 |
[백준|파이썬] 1260: DFS와 BFS (실버2) (0) | 2023.04.05 |
[백준|C++] 2750: 수 정렬하기 (0) | 2021.09.10 |
[백준|C++] 2869: 달팽이는 올라가고 싶다 (0) | 2021.09.02 |