ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/ํ๋ก๊ทธ๋๋จธ์ค
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฐ์ฅ ๋จผ ๋ ธ๋
dirmathfl 2020. 9. 2. 14:29728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๊ฐ ๋ ธ๋์ ๊ฐ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ฅผ ํ์ ํ ํ ํ, ์ด์ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ์ง ๋ ธ๋๊ฐ ๋ช ๊ฐ์ธ์ง ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. BFS๋ฅผ ํตํ ๊ทธ๋ํ ํ์์ ์ดํดํ๊ณ ์๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
- ๊ทธ๋ํ์ ๊ฐ์ ์ ๋ณด๋ฅผ ํ๋์ ๋ฆฌ์คํธ์ ์ด๊ธฐํ ํ๋ค.
- ์๋ฅผ ๋ค์ด, 1๋ฒ ๋ ธ๋์์ 2๋ฒ ๋ ธ๋๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๋ค๋ฉด, `graph[1].append[2]`์ ๊ฐ์ด ์งํํ๋ฉด ๋๋ค.
- ๋ฆฌ์คํธ ์ธ๋ฑ์ค์ ์ ๊ทผํ๊ธฐ ์ํด node๋ค์ -1์ ํ์ฌ ์ฒ๋ฆฌํ์๋ค.
- ๊ทธ๋ํ๋ ์๋ฐฉํฅ์ด๋ฏ๋ก, `graph[1].append[2`]๋ผ๋ฉด `graph[2].append[1]`๋ ์ฒ๋ฆฌํด ์ฃผ์ด์ผ ํ๋ค.
- ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ `visited`๋ฅผ ํ์ฉํ์ฌ, ํ์ฌ ๋ ธ๋์ ๋ฐฉ๋ฌธํ๋๋ฐ ๊ฑธ๋ฆฐ ๊ฑฐ๋ฆฌ๋ฅผ ์ฒดํฌํ๋ค.
- BFS๋ฅผ ํตํด, 1๋ฒ ๋ ธ๋๋ฅผ ์์์ผ๋ก ํ์ฌ ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ์ง์ ์ ํ์ํ ํ `vistied`์ ๊ฑฐ๋ฆฌ๋ฅผ ์ฒดํฌํ๋ค.
์ฝ๋
from collections import deque
def solution(n, edge):
graph = [[] for _ in range(n)]
# ๊ทธ๋ํ ์ฐ๊ฒฐ ์ ๋ณด ์ด๊ธฐํ.
for node, connect in edge:
graph[node - 1].append(connect - 1)
graph[connect - 1].append(node - 1)
# visited๋ก ๋
ธ๋ ๊ฐ์ ๊ธธ์ด๋ฅผ ์นด์ดํธ.
visited = [0] + [-1] * (n - 1)
# ์ฒซ ๋ฒ์งธ ์์ ๋
ธ๋๋ [1๋ฒ ๋
ธ๋]
q = deque([[0, 0]])
while q:
cur_node, dist = q.popleft()
for next_node in graph[cur_node]:
if visited[next_node] == -1:
q.append([next_node, dist + 1])
visited[next_node] = dist + 1
# visited์ max๊ฐ๊ณผ ๊ทธ๊ฒ์ ์นด์ดํธ ํ๊ฒ์ ๊ฐ์ฅ ๋จผ ๋
ธ๋์ ์.
return visited.count(max(visited))
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ์คํฌํธ๋ฆฌ (0) | 2020.09.02 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2020.09.02 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌ ์ฐ๊ฒฐํ๊ธฐ (0) | 2020.09.02 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋ ๋ฐ๋จน๊ธฐ (0) | 2020.09.01 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2020.09.01 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ