
✔️ silver 3
그래프 이론
그래프 탐색
너비 우선 탐색
깊이 우선 탐색
시작 노드의 역할을 하는 1번 컴퓨터를 제외하고 1번 컴퓨터가 포함된 연결 요소의 구성 노드 수를 구하면 되겠다.
탐색은 내가 BFS보다 DFS에서 덜 익숙한 것 같아서 DFS를 이용했다.
방문 체크를 하면서 수도 같이 카운트해줬다.
# 바이러스
# graph
import sys
input = sys.stdin.readline
if __name__ == "__main__":
n = int(input())
g = {node: [] for node in range(1, n+1)}
m = int(input())
for i in range(m):
u, v = map(int, input().split())
g[u].append(v)
g[v].append(u)
# dfs
st = [1]
vst = [0 for i in range(n+1)]
vst[1] = 1
cnt = 0
while st:
x = st.pop()
for n in g[x]:
if vst[n]:
continue
st.append(n)
vst[n] = 1
cnt += 1
print(cnt)
아직 어려운 난이도의 문제는 아니라서 큰 어려움은 없었다.
이전에 푼 코드가 있으면 항상 읽어보고 있는데 과거의 나는 참 코드를 이상하게 짜는 것 같았다.
정답만 맞으면 되는 사람.. 시간 복잡도도 고려 안하고 변수명도 아무거나 지정했다. ;;;
고작 10개월 전 코드인데 이렇게 이상한 것도 웃기고, 그전 제출은 다 틀렸는데 2년 전이라서 더 웃기다.
내가 발전을 하고 있는건가? 싶다가도 이런걸 보면 하고 있으면 성장이 없는 사람은 없구나 싶기도 하다.