[Baekjoon/๐ฅSilverโ ก] 11724: ์ฐ๊ฒฐ ์์์ ๊ฐ์
Intro
์ ๊ทผ ๋ฐฉ๋ฒ๐โโ๏ธ
์ฐ๊ฒฐ ์์?
- ์ฌ๊ธฐ์ ๋งํ๋ ์ฐ๊ฒฐ ์์๋ ํ๋๋ก ์ด์ด์ง ๊ทธ๋ํ๋ผ ์๊ฐํ๋ฉด ์ฝ๋ค.
- ๋ค์์ ์์ ์์ ์ฐ๊ฒฐ ์์์ ๊ฐ์๋ ๋๊ฐ์ด๋ค.
- ์ฐ๊ฒฐ ์์๋ผ๋ฆฌ๋ ์๋ก ์ด์ด์ง์ง ์์์ผ ํ๋ค.
- ๋ง์ฝ (1, 2, 3)๊ณผ (4, 5, 6) ์ฌ์ด ํ๋์ ๊ฐ์ ์ด๋ผ๋ ์กด์ฌํ๋ค๋ฉด ์ฐ๊ฒฐ ์์๋ 1๊ฐ๊ฐ ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ?
ํด๋น ๋ฌธ์ ๋ bfs ๋๋ dfs๋ฅผ ์ ์ฉํด ํด๊ฒฐํ ์ ์๋ค.
โ bfs: ๋์ด ์ฐ์ ํ์
โ dfs: ๊น์ด ์ฐ์ ํ์
Algoritm๐ฉโ๐ป
- ์ฒ์ ๋๋ ๋ฌธ์ ๋ฅผ ์ ํ๊ณ bfs๋ dfs ๋ฐฉ์์ด ์๋ ๋ด ๋๋ฆ์ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด์๋ค.
#21.01.08
#11724: ์ฐ๊ฒฐ ์์์ ๊ฐ์
import sys
n, m = map(int, sys.stdin.readline().rstrip().split())
lst = []
check = set()
cnt = 0
for i in range(m):
temp = list(map(int, sys.stdin.readline().rstrip().split()))
temp.sort()
lst.append(temp)
lst.sort(key= lambda i : (i[0], i[1]))
for f, b in lst:
if f not in check and b not in check:
cnt += 1
check.add(f)
check.add(b)
l = n - len(check)
print(cnt + l)
- ๊ฐ์ ๋ค์ ์
๋ ฅ๋ฐ์ ๋ ์์ ์๊ฐ ์์ ์ค๋๋ก ์ ๋ ฌ์ ํ์๋ค.
- ๋, ๊ฐ์ ๋ค๋ผ๋ฆฌ๋ ์ฆ๊ฐํ๋ ์์ผ๋ก ์ ๋ ฌํ์๋ค.
- ๊ฐ์ ์ ํ๋์ฉ ๋ฐฉ๋ฌธํ๋ฉด์ set์ ๊ฐ์ ์ ํฌํจ๋ ์ ์ ๋ค์ ์ถ๊ฐํ์๋ค.
- set์ ์ค๋ณต ์ ์ฅ์ด ๋์ง ์์ผ๋ฏ๋ก ์ต์ข ์ ์ผ๋ก ๋ฐฉ๋ฌธํ ์ ์ ๋ง์ด ์ ์ฅ๋๋ค.
- ๊ฐ์ ์ ํฌํจ๋ ๋ ์ ์ ์ด ๋ชจ๋ set์ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ => ์๋ก์ด ์ฐ๊ฒฐ ์์์ด๋ฏ๋ก cnt๊ฐ์ ํ๋ ์ฆ๊ฐํ๋ค.
- cnt๊ฐ๊ณผ ํ๋์ ์ ์ ์ด ์ฐ๊ฒฐ ์์๋ฅผ ์ด๋ฃจ๋ ๊ฒฝ์ฐ๋ฅผ ํฌํจํด ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- ๋ณต์กํ ๋ฐฉ๋ฒ๋งํผ์ด๋ ์๊ฐ์ด ๋งค์ฐ ๋ง์ด ๊ฑธ๋ฆฐ๋คโฆใ ใ
Algorithm๐ฉโ๐ป: BFS
- ๊ทธ๋ ๋ค๋ฉด bfs๋ฅผ ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ์ดํด๋ณด์!
#21.01.08
#11724: ์ฐ๊ฒฐ ์์์ ๊ฐ์
#bfs ์ฌ์ฉํ๊ธฐ
import sys
n, m = map(int, sys.stdin.readline().split())
graph = [[] for _ in range(n+1)]
visited = [0 for _ in range(n+1)]
for i in range(m):
f, b = map(int, sys.stdin.readline().split())
graph[f].append(b)
graph[b].append(f)
def bfs(v):
order = [v]
while order:
t = order.pop()
for j in graph[t]:
if visited[j] == 0:
order.append(j)
visited[j] = 1
result = 0
for k in range(1, n+1):
if visited[k] == 0:
bfs(k)
result += 1
print(result)
- ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๊ฐ์ฐจ์ด๊ฐ ์์ฒญ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!!!!!
๊ทธ๋ผ ํด๋น ํฌ์คํ ์ ์ฌ๊ธฐ๊น์ง ํ๋๋ก ํ๋ค!!
๋!! ~(หโพห~)
๋๊ธ๋จ๊ธฐ๊ธฐ