ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ํ์ด
์ด ๋ฌธ์ ๋ ๋ฐฉํฅ์ด ์๋ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ๊ฒฐ ์์์ ๊ฐ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์ฐ๊ฒฐ ์์๋ ํน์ ๋ ธ๋๋ฅผ ์์์ผ๋ก ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ๋ค๋ฅธ ๋ ธ๋์ ์งํฉ์ด๋ค. ์ฐ๊ฒฐ ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฐพ์ ์ ์๋ค.
- 1๋ฒ ๋
ธ๋๋ฅผ ์์์ผ๋ก ํ์์ ์์ํ๋ค.
- 1๋ฒ ๋ ธ๋ ํ์ ์ ๋ฐฉ๋ฌธํ ๋ ธ๋, ์ฆ ์ฐ๊ฒฐ ์์๋ค์ ์ฒดํฌํ๋ค.
- ํ์์ด ์๋ฃ ๋๋ฉด, ํ๋์ ์ฐ๊ฒฐ ์์๋ฅผ ์ฐพ์ ๊ฒ์ด๋ค.
- ํ์ ๋์ง ์๋ ๋
ธ๋๊ฐ ๋จ์์๋ค๋ฉด, ํ์ ๋์ง ์๋ ๋
ธ๋๋ฅผ ์์์ผ๋ก ๋ค์ ํ์ํ๋ค.
- ํ์์ด ์๋ฃ๋๋ฉด, ํ๋์ ์ฐ๊ฒฐ ์์๊ฐ ์ถ๊ฐ ๋๋ค.
- ์์ ๊ณผ์ ์ ๋ฐ๋ณต์ ํตํด, ์ฐ๊ฒฐ ์์๋ฅผ ์ฐพ์ ์ ์๋ค.
- ์ ๋ ฅ ์์ 1์ ๊ฒฝ์ฐ ํ์์ด ์๋ฃ๋๋ฉด ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 2๊ฐ์ ์ฐ๊ฒฐ์์๊ฐ ์๋ค๋ ๊ฒ์ ์ฐพ์ ์ ์๋ค.
์ฆ, ์ ๋ฆฌํ์๋ฉด ํ๋์ ๋ ธ๋๋ฅผ ์์์ผ๋ก ๊ทธ๋ํ ํ์์ ์์ํด๋ณด๊ณ , ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ์ฌ ์ค๋ณต ํ์์ด ๋์ง ์๋๋กํ๋ ๊ฒ์ด๋ค. ์ด๋ 1 - 3 - 2 - 4๋ผ๋ ์ฐ๊ฒฐ ์์๊ฐ ์๋ค๋ฉด 3, 2, 4 ์ด๋ค ๋ ธ๋์์ ์์ํ๋๋ผ๋ ๊ฐ์ ์ฐ๊ฒฐ ์์๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ๋ฒ์ ๊ทธ๋ํ ํ์ ํ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์๋ค๋ฉด, ์ฐ๊ฒฐ ์์๋ 1์ด ๋๊ณ ์๋ ๊ฒฝ์ฐ๋ ์ถ๊ฐ์ ์ธ ํ์ ํ์์ ๋ฐ๋ผ ์ฐ๊ฒฐ ์์๊ฐ ์ถ๊ฐ๋๊ฒ ๋๋ค.
์ฝ๋
from collections import deque
from sys import stdin
def bfs(start):
global visited
q = deque([start])
while q:
cur_node = q.popleft()
for next_node in range(n):
if graph[cur_node][next_node] and not visited[next_node]:
visited[next_node] = True
q.append(next_node)
return 1
if __name__ == "__main__":
answer = 0
# input()์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํจ
n, m = map(int, stdin.readline().split())
graph = [[False] * n for _ in range(n)]
visited = [False] * n
for _ in range(m):
i, j = map(int, stdin.readline().split())
# ๊ทธ๋ํ๋ ์๋ฐฉํฅ์ด๋ฏ๋ก ๋ฐ์ ํ์ฌ ์ฒดํฌํด์ค์ผ ํจ
graph[i - 1][j - 1] = True
graph[j - 1][i - 1] = True
for node in range(n):
if not visited[node]:
visited[node] = True
answer += bfs(node)
print(answer)
ํด๋น ๋ฌธ์ ๋ฅผ ํ ๊ฒฝ์ฐ, `input()`์ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ `sys.stdin.readline`์ ์ฌ์ฉํ์ฌ์ผ ํ๋ค. ๋ํ, ๋ ธ๋์ ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ์ฒดํฌ ํ ๋, ๋ฆฌ์คํธ์ `append`ํ๋ ๋ฐฉ์๋ณด๋ค ๋ฏธ๋ฆฌ ์ด๊ธฐํ๋ ๋ฆฌ์คํธ์ ๊ฐ์ ๊ฐฑ์ ํด์ฃผ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2667 ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2020.07.21 |
---|---|
๋ฐฑ์ค: 13023 ABCDE (0) | 2020.07.20 |
๋ฐฑ์ค: 1260 DFS์ BFS (0) | 2020.07.20 |
๋ฐฑ์ค: 1248 ๋ง์ถฐ๋ด (0) | 2020.07.19 |
๋ฐฑ์ค: 2529 ๋ถ๋ฑํธ (0) | 2020.07.18 |