[BOJ/python] 2606: 바이러스

songeunm·2024년 10월 8일

PS - python

목록 보기
18/62
post-thumbnail

문제

✔️ 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년 전이라서 더 웃기다.
내가 발전을 하고 있는건가? 싶다가도 이런걸 보면 하고 있으면 성장이 없는 사람은 없구나 싶기도 하다.

profile
데굴데굴 구르는 개발자 지망생

0개의 댓글