창용 마을 무리의 개수

최민수·2023년 7월 5일
0

알고리즘

목록 보기
62/94
T = int(input())
visited = [False for _ in range(101)]
answer = 0
graph = [[] for _ in range(101)]


def dfs(idx):
    global graph
    visited[idx] = True
    for item in graph[idx]:
        if not visited[item]:
            dfs(item)


def init():
    global answer, visited, graph
    answer = 0
    graph = [[] for _ in range(101)]
    for j in range(101):
        visited[j] = False


# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    init()
    n, m = map(int, input().split())

    for i in range(m):
        first, sec = map(int, input().split())
        graph[first].append(sec)
        graph[sec].append(first)

    # 탐색
    for i in range(1, n + 1):
        if not visited[i]:
            dfs(i)
            answer += 1

    print("#" + str(test_case) + " " + str(answer))

D4

dfs/bfs를 사용해서 몇 개의 무리가 있는지를 찾아내는 문제였다.
dfs가 개인적으로 더 사용하기 편해서 썼고, 이 때 visited 배열 조건을 잘 세팅해주는 것이 중요했다.

init() 함수와 global 키워드로 깔끔하게 작성하는 것을 연습하자.


출처: https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYj2mga6ZewDFASl&contestProbId=AWngfZVa9XwDFAQU&probBoxId=AYj2mga6Ze0DFASl&type=PROBLEM&problemBoxTitle=%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98+Track+%28%EB%82%9C%EC%9D%B4%EB%8F%84+%EC%83%81%29&problemBoxCnt=6

profile
CS, 개발 공부기록 🌱

0개의 댓글