๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด

๋ฌธ์ œ ์ด๋ฆ„ ์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜
๋ฌธ์ œ ๋ฒˆํ˜ธ 11724
๋‚œ์ด๋„ Silver 2
๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/11724
ํ’€์ด ์–ธ์–ด Python


๐Ÿค” ๋‚˜์˜ ์•„์ด๋””์–ด

์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํžˆ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค์„ ์ฐพ์•„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์œผ๋ฉด ๋˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ–ˆ๋‹ค

๊ทธ๋ž˜์„œ for ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ DFS๋‚˜ BFS๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ํ•œ ๋ฒˆ์˜ ํƒ์ƒ‰์ด ๋๋‚  ๋•Œ๋งˆ๋‹ค ์นด์šดํŠธ๋ฅผ 1์”ฉ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ–ˆ๋‹ค

๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” visited ๋ฐฐ์—ด์— ํ‘œ์‹œํ•ด์„œ ์ค‘๋ณต ๋ฐฉ๋ฌธ์„ ํ”ผํ•˜๋„๋ก ํ–ˆ๋‹ค

์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ๋งŒ ํ™•์ธํ•˜๋ฉด์„œ ์—ฐ๊ฒฐ๋œ ๋ฉ์–ด๋ฆฌ(์—ฐ๊ฒฐ ์š”์†Œ)์˜ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ™•ํžˆ ์…€ ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค


โœจ ์†Œ์Šค ์ฝ”๋“œ

import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline

n, m = map(int, input().split())
graph = [[] for _ in range(n + 1)]
for _ in range(m):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)

visited = [False] * (n + 1)
count = 0

def dfs(v):
    visited[v] = True
    for i in graph[v]:
        if not visited[i]:
            dfs(i)

for i in range(1, n + 1):
    if not visited[i]:
        dfs(i)
        count += 1

print(count)


๐Ÿ’ก ๋ฐฐ์šด ์  & ๋А๋‚€ ์ 


TODO