728x90
๐ ์ฝ๋์ 4503 - ๋ฐ์ด๋ฌ์ค
๐ก ๋์ ํ์ด
์ด ๋ฌธ์ ์ ๋ค์ํ ํ์ด๊ฐ ์๊ฒ ์ง๋ง, ์ฐ์ DFS๋ก ํ์ด๋ดค๋ค. ๋ด์ผ์ BFS๋ก ํ์ด ๋ณผ ์์ ์ด๋ค.
๋น ์ ํ์๋ฃ๊ตฌ์กฐ์ธ ๊ทธ๋ํ์์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ ์ ํ ์๋ฃ๊ตฌ์กฐ์ ๋ค๋ฅด๊ฒ ์ ๋ ฅ์ ๋ฐ์๋ ์๋ฐฉํฅ์ผ๋ก ๋ฐ์์ผ ํ๋ค๋ ์ ์ด๋ค.
์ด๋ฒ ๋ฌธ์ ์์ ์
๋ ฅ๊ฐ์ ์ด๋ป๊ฒ ๋ฐ์์ผ ํ๋์ง ์กฐ๊ธ ํท๊ฐ๋ ธ๋๋ฐ, ์๋ฐฉํฅ์ผ๋ก ๋ฐ์ผ๋ฉด ์ ์์ ์ผ๋ก ์ ๋ต ํ์ ์ ๋ฐ์ ์ ์๋ค.
๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด์๋ ์ปดํจํฐ๋ง ๋ฐ์ด๋ฌ์ค์ ๊ฑธ๋ฆฐ๋ค๊ณ ํ์ผ๋ฏ๋ก DFS๋ฅผ ํตํด ๋์จ๊ฐ๋ค์ len
์ ๊ตฌํ๋ฉด ๋๋ค.
๋, DFS๋ฅผ ํธ๋ ๋ฐฉ๋ฒ์๋ 2๊ฐ์ง๊ฐ ์๋๋ฐ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ด์ฝํ ์์ ๋ฐฐ์ด ๋ฐฉ๋ฒ:
Flag: if not visited[i]
visited
๋ฅผ ๋ชจ๋[False]
๋ก ์ด๊ธฐํํด๋๊ณ ํ์ฌ ๋ฐฉ๋ฌธํ๋ ค๋ ๊ฐ์ดFalse
์ด๋ฉด, ํด๋น ๊ฐ์ ๋ฐฉ๋ฌธํ๋ค๋ ํ์์ธTrue
๋ก ๋ณ๊ฒฝํ๊ณ ๋ฐฉ๋ฌธํ์ง ์์ ์ธ์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
- ๋จ์ ํ์ธ๋ฐฉ๋ฒ:
check: if i not in visited
visited
์์ ํ์ฌ ๊ฐ๊ณผ ๋๊ฐ์ ๊ฐ์ด ์์ผ๋ฉด ๋ฐฉ๋ฌธ ์ฒ๋ฆฌํ๋ค.
๋จ์ ํ์ธ๋ฐฉ๋ฒ์ ์ ์ผ ์ฒซ ๋ฒ์งธ ๊ฐ๋ ํฌํจ๋๋ฏ๋ก ๋ฌธ์ ์์๋ ๊ธฐ์ค์ด ๋๋ ๊ฐ์ ์ ์ธํ๊ณ ์ถ๋ ฅํด์ผ ํ๋ฏ๋กlen(result)-1
์ ํด์ค์ผ ํ๋ค.
# 1. Flag ๋ฐฉ๋ฒ
def dfs(graph, v, visited):
visited[v] = True
for i in graph[v]:
if not visited[i]:
result.append(i)
dfs(graph, i, visited)
computer = int(input())
network = int(input())
graph = [[] for _ in range(computer+1)]
result = []
visited = [False] * (computer+1)
for i in range(network): # ๊ทธ๋ํ๋ ์๋ฐฉํฅ์ด๋๊น ๊ฑฐ๊พธ๋ก๋ ์ถ๊ฐ์์ผ์ผํ๋ค.
node, node2 = map(int, input().split())
graph[node].append(node2)
graph[node2].append(node)
dfs(graph, 1, visited)
print(len(result))
# 2. ๋จ์ ํ์ธ(check) ๋ฐฉ๋ฒ
def dfs(graph, v, visited):
for i in graph[v]:
if i not in visited:
visited.append(i)
dfs(graph, i, visited)
computer = int(input())
network = int(input())
graph = [[] for _ in range(computer+1)]
visited = []
for i in range(network): # ๊ทธ๋ํ๋ ์๋ฐฉํฅ์ด๋๊น ๊ฑฐ๊พธ๋ก๋ ์ถ๊ฐ์์ผ์ผํ๋ค.
node, node2 = map(int, input().split())
graph[node].append(node2)
graph[node2].append(node)
dfs(graph, 1, visited)
print(len(visited)-1)
๋ฐ์ํ
'Algorithm > ์ฝ๋์ (Code up)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ์ฝ๋์ 1460 ~ 1467 - 2์ฐจ์ ๋ฐฐ์ด ์์๋๋ก ์ฑ์ฐ๊ธฐ 1-1 ~ 1-8 (0) | 2021.04.29 |
---|---|
[ ํ์ด์ฌ(python) ] ์ฝ๋์ 4503 - ๋ฐ์ด๋ฌ์ค(BFS) (0) | 2021.04.15 |
[ python ] ์ฝ๋์ 1920 - 2์ง์ ๋ณํ (0) | 2021.04.09 |
[ python ] ์ฝ๋์ 1905 - 1๋ถํฐ n๊น์ง์ ํฉ ๊ตฌํ๊ธฐ (0) | 2021.04.09 |
[ python ] ์ฝ๋์ 1904 - ๋ ์ ์ฌ์ด์ ํ์ ์ถ๋ ฅํ๊ธฐ (0) | 2021.04.09 |
๋๊ธ