๋ฌธ์ ์ค๋ช
๊ฐ์ฅ ๋จผ ๋ ธ๋
n๊ฐ์ ๋ ธ๋๊ฐ ์๋ ๊ทธ๋ํ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ ธ๋๋ 1๋ถํฐ n๊น์ง ๋ฒํธ๊ฐ ์ ํ์์ต๋๋ค. 1๋ฒ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ ์ต๋จ๊ฒฝ๋ก๋ก ์ด๋ํ์ ๋ ๊ฐ์ ์ ๊ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ๋ ธ๋๋ค์ ์๋ฏธํฉ๋๋ค.
๋ ธ๋์ ๊ฐ์ n, ๊ฐ์ ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด vertex๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ ธ๋์ ๊ฐ์ n์ 2 ์ด์ 20,000 ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ฉฐ ์ด 1๊ฐ ์ด์ 50,000๊ฐ ์ดํ์ ๊ฐ์ ์ด ์์ต๋๋ค.
- vertex ๋ฐฐ์ด ๊ฐ ํ [a, b]๋ a๋ฒ ๋ ธ๋์ b๋ฒ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ์ถ๋ ฅ ์
nvertexreturn
6 | [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] | 3 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ ์ ๊ทธ๋ํ๋ฅผ ํํํ๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๊ณ , 1๋ฒ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ 4,5,6๋ฒ ๋ ธ๋์ ๋๋ค.
ํ์ด
Weight๊ฐ ์์๋ค๋ฉด ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ด์ง๋ง, ์์ผ๋ฏ๋ก bfs ๋ฌธ์ ์ด๋ค.
1์์ ๋ถํฐ, ๊ฐ์ฅ ๊ฐ๊น์ด ๋
ธ๋์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํด์ฃผ๊ณ ,
ํด๋น ๋
ธ๋์ ์ฐ๊ฒฐ๋์ด์๋ edge์ ์ถ๊ฐํด์ค๋ค.
์ด๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ๋ชจ๋ ์ ๋ถ์ ๋ค ์ ๊ฒํ ๋๊น์ง ๊ณ์ํด์ ๊ฑฐ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธ ํด์ฃผ๋ฉด ๋๋ค.
from collections import deque
def solution(n, edge):
answer = 0
dist = [ -1 for _ in range(n + 1)]
dist[1] = 0
adj = [ [] for _ in range(n + 1)]
for [f, to] in edge:
adj[f].append(to)
adj[to].append(f)
edges = deque([])
for v in adj[1]:
edges.append((1, v))
while edges:
top = edges.popleft()
f, to = top[0], top[1]
if dist[to] == -1:
dist[to] = dist[f] + 1
for v in adj[to]:
edges.append((to, v))
return dist.count(max(dist))
'Problem Solving ๐ฅ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ธ๋ฒฝ ์ ๊ฒ / ํ์ด์ฌ (0) | 2021.01.23 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น / ํ์ด์ฌ / (์งํฉ) (0) | 2021.01.23 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ / ํ์ด์ฌ (0) | 2021.01.19 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ถ์ ํธ๋ํฝ / ํ์ด์ฌ (0) | 2021.01.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ์ ํฐ๋จ๋ฆฌ๊ธฐ / ํ์ด์ฌ / (์ต์, ์ต๋, ํ) (2) | 2021.01.18 |